当前位置: 首页 > 知识库问答 >
问题:

未选择日历元素-Selenium Webdriver

宰父淳
2023-03-14

我有困难选择一个特定的日期使用日期选择器。下面是我尝试这样做的代码:

String parentWindow = driver.getWindowHandle();
String subWindow = null;
driver.findElement(By.xpath(".//*[@id='ns_7_CO19VHUC6VU280AQ4LUKRK0IR7_fmOutboundDateDisplay']")).click(); //Clicking on datepicker icon

// Change to a new window
String parentWindow = driver.getWindowHandle();
String subWindow = null;
Set<String> handles = driver.getWindowHandles(); // get all window handles
Iterator<String> iterator1 = handles.iterator();
while (iterator.hasNext()){
    subWindow = iterator.next();
}
driver.switchTo().window(subWindow);
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
driver.findElement(By.xpath("//*[@class='calendarBodyContainer']/tr[2]/td[3]/span")).click(); //Departure Date- 10Feb/2015
driver.findElement(By.xpath(".//*[@class='calendarBodyContainer']/tr[4]/td[4]/span")).click(); //Arrival Dtae- 25 Feb/2015
driver.switchTo().window(parentWindow);

然而,我得到以下错误:

线程“main”org.openqa.selenium.nosuchelementException:找不到元素:{“method”:“XPath”,“selector”:“//*[@class='calendar bodycontainer']/tr[2]/td[3]/span”}命令持续时间或超时:3.12秒

请帮帮忙。

共有1个答案

万俟旭
2023-03-14

问题是您错误地将calendar小部件当成了新的窗口,并相应地进行了自动操作,这导致未找到该元素,这是@Alecxe正确地怀疑的

请尝试下面的代码,看看它是否适合您。

WebDriver driver=new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

//Navigating to the site
driver.get("http://www.lufthansa.com/online/portal/lh/us/homepage");

//Clicking on the Departing field to select date
driver.findElement(By.id("ns_7_CO19VHUC6VU280AQ4LUKRK0IR7_fmOutboundDateDisplay")).click();

//Selecting Feb 10, 2015 for departure date 
driver.findElement(By.xpath("//td[@dojoattachpoint = 'calRightNode']//span[.='10']")).click();

//Waiting for the return calendar with "Return" as the header to appear
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@dojoattachpoint='calHeadlineNode' and contains(text(),'Return')]")));

//Selecting Feb 26, 2015 for returning date
driver.findElement(By.xpath("//td[@dojoattachpoint = 'calLeftNode']//span[.='26']")).click();

注意:我在“Return Calendar widget”中添加了显式wait for waiting for Return文本,因为它与离开/出站日历重叠,因此selenium需要一点时间来检测DOM中的更改。

 类似资料:
  • 首先我们想一下我们平常看到的日历选择器,通常头部会有一个星期几表头,下面就是日期,而日期下面通常会有1号,1号前面应该有一些上个月的日期,而最后一天后面还应该有下一个月的日期。 对于日期相关处理,JavaScript 提供了 Date 对象。 getDate 获得一个月的第几天 getDay 获得一个星期的第几天 (0 - 6) getMonth 获取月份 (0 - 11) getFullYea

  • 问题内容: 我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和我的方法中) 它以空指针失败。我也尝试了没有。 现在,如果我在我的方法中执行此操作,则一切正常,然后选择正确的项目 这是该控件的实际网页摘要(已编辑以保护无辜者) 让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。 问题答案: 那是因为该类具有以下构造函数: 见J

  • 本文向大家介绍jQuery 选择元素的子元素,包括了jQuery 选择元素的子元素的使用技巧和注意事项,需要的朋友参考一下 示例 要选择元素的子代,可以使用children()方法。 更改元素所有子.parent元素的颜色: 该方法接受一个可选selector参数,该参数可用于过滤返回的元素。            

  • 我试图让用户选择一个日期,当点击一个按钮,它显示3个滚动轮选择日,月和年,然后将设置任何用户选择到文本视图,在我点击按钮的时刻没有发生只是空点击任何帮助将是赞赏的。我将在下面插入代码。我在这行代码上收到一个错误。 Datepicker代码 按钮和TextView代码: 错误:

  • 我找不到日期选择器的元素。我尝试了CssSelector和xpath等。下面是我试过的代码。 代码: 下面是HTML代码。 HTML: 这里是错误: 组织。openqa。硒。NoTouchElementException:无法定位元素:

  • 我有一个选择元素,里面有多个选项: 对于这里看到的每个选项元素,我都有另一个select元素。基本上,我在一个选择元素中列出了一系列音乐流派,在它下面,是与每一个“主流派”相关的子流派。 我想做的是使子体裁只有在相对体裁被选中时才可见。例如,如果用户选择“Pop”,我想向他们显示包含Pop子类型的相关选择字段。 我的HTML标记实际上是由WordPress插件生成的,不幸的是,我无法编辑它。也就是