首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在selenium中选择日期时的奇怪行为

在selenium中选择日期时的奇怪行为
EN

Stack Overflow用户
提问于 2021-12-22 02:24:45
回答 1查看 44关注 0票数 0

我正在尝试使用selenium+java选择一个日期,但它的行为非常奇怪。

除此之外,我得到的是元素,而不是异常。

我正在传递函数中的日期

我做错了什么

下面是代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class date_automation {
WebDriver driver = null;

@BeforeTest
public void initialise() {
    WebDriverManager.chromedriver().setup();
    driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.get("https://www.goibibo.com/");
}

@Test
public void test_calendar() throws InterruptedException {
    WebElement departure_date = driver.findElement(By.id("departureCalendar"));
    departure_date.click();
    selectDateInCalendar("23/01/2022");
}

public void selectDateInCalendar(String date) throws InterruptedException {

    Date CurrentDate = new Date();
    SimpleDateFormat newDateFormat = new SimpleDateFormat("dd/MM/yyyy");
    try {
        Date expectedDate = newDateFormat.parse(date);
        String day = new SimpleDateFormat("dd").format(expectedDate);
        String month = new SimpleDateFormat("MMMM").format(expectedDate);
        String year = new SimpleDateFormat("yyyy").format(expectedDate);
        System.out.println(day + "*****" + month + "*****" + year);
        String expectedMonthYear = month + " " + year;
        System.out.println(expectedMonthYear);
        String displayDate = driver.findElement(By.xpath("//div[@class='DayPicker-Caption']")).getText();
        while (true) {

            if (expectedMonthYear.equals(displayDate)) {
                driver.findElement(By.xpath("//div[text()='" + day + "']")).click();
            } else {
                driver.findElement(By.xpath("//span[@class='DayPicker-NavButton DayPicker-NavButton--next']"))
                        .click();
            }

        }

    } catch (ParseException e) {
        e.printStackTrace();
    }

}

@AfterTest
public void cleanup() {
    driver.quit();
}

}

EN

回答 1

Stack Overflow用户

发布于 2021-12-23 22:55:22

在您的代码中,您需要将这一行String displayDate = driver.findElement(By.xpath("//div[@class='DayPicker-Caption']")).getText();放在while循环中。

我也试过了,并且能够通过以下方式选择日期:

  • 单击所需的数据收集对象
  • ,检查显示的月份和年份,并查看它是否与我们希望选择的/预期的月份和年份匹配,继续单击“下一个月”按钮(只要未禁用),如果在步骤2
  • 中达到所需的月份和年份后匹配失败,请选择所需的日期

f 210

请参考下列代码选择出发日期和日期:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package usecase;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

import io.github.bonigarcia.wdm.WebDriverManager;

public class DatePicker {
    public static WebDriver driver;

    /**
     * selects the date provided in d/m/yyyy format
     */
    public static void selectDate(By dateObject, String date) {
        driver.findElement(dateObject).click();
        SimpleDateFormat sdfInput = new SimpleDateFormat("d/M/yyyy");
        SimpleDateFormat sdfOutput = new SimpleDateFormat("d-MMMM yyyy");
        try {
            String outputDate = sdfOutput.format(sdfInput.parse(date));
            System.out.println(outputDate);
            String outputDay = outputDate.split("-")[0];
            String outputMY = outputDate.split("-")[1];
            String displayedHeading;
            while (!(displayedHeading = driver.findElement(By.className("DayPicker-Caption")).getText())
                    .equalsIgnoreCase(outputMY)) {
                WebElement gotoNextMonth = driver.findElement(By.cssSelector("span[aria-label='Next Month']"));
                if (!gotoNextMonth.getAttribute("class").contains("interactionDisabled")) // click next month button
                                                                                            // only if it is NOT
                                                                                            // disabled
                    gotoNextMonth.click();
                else {
                    System.err.println("The Date " + date + " could not be selected");
                    break;
                }
            }
            driver.findElement(By.xpath("//div[@class='DayPicker-Day']/div[text()='" + outputDay + "']")).click();
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws InterruptedException {
        WebDriverManager.chromedriver().setup();
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("https://www.goibibo.com/");
        selectDate(By.id("departureCalendar"), "25/6/2022");
        selectDate(By.id("returnCalendar"), "1/7/2022");
        Thread.sleep(3000); // Let me see what happened on screen
        driver.quit();
    }
}

演示:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70447541

复制
相关文章
WPF依赖属性(wpf 依赖属性)
依赖属性就是一种自己可以没有值,并且可以通过绑定从其他数据源获取值。依赖属性可支持WPF中的样式设置、数据绑定、继承、动画及默认值。
全栈程序员站长
2022/07/28
2.2K0
WPF依赖属性(wpf 依赖属性)
学习WPF——初识依赖项属性
入门 首先创建一个依赖项属性 然后绑定父容器的DataContext到这个依赖项的实例 接着绑定子元素的属性到依赖项属性(注意Button的Content属性) 程序最终的运行结果: 说明 首先是定义
liulun
2018/01/12
9400
学习WPF——初识依赖项属性
[翻译] WPF 中用户控件 DataContext/Binding 和依赖属性的问题
ProgrammingDude(asked Dec 8, 2015 at 21:24)
独立观察员
2022/12/06
9840
WPF 依赖属性绑定不上调试方法
在写 WPF 程序的时候会遇到依赖属性绑定了,但是值没有更新或者没有绑定上的问题,本文告诉大家可以如何调试
林德熙
2020/07/06
1.7K0
WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了
如果你写了一个 MarkupExtension 在 XAML 当中使用,你会发现你在 MarkupExtension 中定时的属性是无法使用 XAML 绑定的,因为 MarkupExtension 不是一个 DependencyObject。
walterlv
2020/02/10
1.7K0
WPF面试题-来自ChatGPT的解答
问题来自【愚公系列】2023年07月 WPF控件专题 2023秋招WPF高频面试题[1],回答站长通过ChatGPT重新整理,可对比两者区别学习、整理。
沙漠尽头的狼
2023/08/31
4510
WPF面试题-来自ChatGPT的解答
WPF 调试依赖属性变更方法
在 WPF 里面,所有的依赖属性都有带通知的功能,通过带通知的功能,可以在通知里加上断点,通过调用堆栈了解是哪个模块调用的
林德熙
2022/08/12
4070
在 WPF 中获取一个依赖对象的所有依赖项属性
本来 .NET 中提供了一些专供设计器使用的类型 TypeDescriptor 可以帮助设计器找到一个类型或者组件的所有可以设置的属性,不过我们也可以通过此方法来获取所有可供使用的属性。
walterlv
2023/10/22
4120
[UWP]依赖属性2:使用依赖属性
以上代码为一个相对完成的依赖属性例子(还有一些功能比较少用就不写出了),从这段代码可以看出,自定义依赖属性的步骤如下:
dino.c
2019/01/18
1.4K0
C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧
Caliburn.Micro的一个主要特性是,它能够通过一系列约定消除对锅炉铭牌代码的需求。有些人喜欢习俗,有些人讨厌习俗。这就是为什么CM的约定是完全可定制的,如果不需要,甚至可以完全关闭。如果您要使用约定,并且由于它们在默认情况下处于启用状态,那么最好了解这些约定是什么以及它们是如何工作的。这就是本文的主题。
用户9127601
2022/01/13
2.8K0
WPF依赖属性的正确学习方法
我在学习WPF的早期,对依赖属性理解一直都非常的不到位,其恶果就是,我每次在写依赖属性的时候,需要翻过去的代码来复制黏贴。
Kiba518
2019/07/25
2K0
WPF依赖属性的正确学习方法
当css属性width设为100%时
  平常在写页面html代码时,经常会使用到width:100%来使控件宽度为父控件的内容宽度。但如果父控件为body,而且没有明确设置body的宽度,那么就会出现以下的情况了。   代码: 1 <body> 2 <div style="background:#888;width:100%;height:200px"> 3 <div style="width:1000px;height:100px;margin:0 auto;border:solid 1px red"></div> 4 </di
^_^肥仔John
2018/01/18
1.4K0
当css属性width设为100%时
win10 uwp DataContext
本文告诉大家DataContext的多种绑法。 适合于WPF的绑定和UWP的绑定。 我告诉大家很多个方法,所有的方法都有自己的优点和缺点,可以依靠自己喜欢的用法使用。当然,可以在新手面前秀下,一个页面一个绑定方法。
林德熙
2018/09/19
8730
win10 uwp DataContext
win10 uwp DataContext
本文告诉大家DataContext的多种绑法。 适合于WPF的绑定和UWP的绑定。 我告诉大家很多个方法,所有的方法都有自己的优点和缺点,可以依靠自己喜欢的用法使用。当然,可以在新手面前秀下,一个页面一个绑定方法。
林德熙
2022/08/04
5060
win10 uwp 依赖属性
本文告诉大家如何使用依赖属性,包括在 UWP 和 WPF 如何使用。 本文不会告诉大家依赖属性的好处,只是简单告诉大家如何使用。
林德熙
2018/09/19
8390
win10 uwp 依赖属性
如何在保留原本所有样式/绑定和用户设置值的情况下,设置和还原 WPF 依赖项属性的值
WPF 备份某控件的一些属性,做一些神奇的操作,然后再还原这些属性。多么司空见惯的操作呀!然而怎么备份却是值得研究的问题。直接赋值?那一定是因为你没踩到一些坑。
walterlv
2023/10/22
2000
EXTJS7 publishes将配置属性发布到viewModel
此例中,虽然viewModel.data中有mycomponent-a: {prop1:xxx},但是textfield的绑定是无效的
路过君
2022/04/26
3620
WPF自学入门(十)WPF MVVM简单介绍
   前面文章中,我们已经知道,WPF技术的主要特点是数据驱动UI,所以在使用WPF技术开发的过程中是以数据为核心的,WPF提供了数据绑定机制,当数据发生变化时,WPF会自动发出通知去更新UI。
黄昏前黎明后
2019/08/26
2.5K0
WPF自学入门(十)WPF MVVM简单介绍
Xamarin 和 WPF 的控件和属性的替换
基本上 Xamarin 和 WPF 的技术是相同的,但是有一些小细节和属性不同,本文记录一些不同的点,方便小伙伴将 WPF 项目迁移为 Xamarin 项目
林德熙
2020/02/18
1.6K0
2018-10-28-WPF的只读依赖属性
依赖属性的概念大家应该都很清楚,那么什么是只读依赖属性呢? ---- 为何要用只读依赖属性 当某些时候,你的依赖属性只是为了表征一种多因素影响的复合状态。这种状态不适合由外部显示设置。比如常见的IsMouseOver,当且仅当这个属性由鼠标输入设备进行内部赋值时,结果才是有效的。而在于外部进行赋值时,其值和相应的真实设备状态是不一致的。 只读依赖属性的局限 由于不可设置,只读依赖属性会被限制众多解决方案,如数据绑定,验证,动画,继承等等。 只读依赖属性的用法 由于仍可以在属性发生改变时引发通知,只读依赖属
黄腾霄
2020/06/10
6120

相似问题

WPF:无法绑定到用户控件中的依赖项属性

11

绑定到用户控件的WPF依赖项属性

11

WPF -绑定到用户控件依赖项属性失败

12

Wpf用户控件依赖项属性绑定

10

绑定到用户控件WPF/XAML的依赖项属性

46
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文