如何使用 Selenium WebDriver 和 Java 处理日历弹出窗口?
Posted
技术标签:
【中文标题】如何使用 Selenium WebDriver 和 Java 处理日历弹出窗口?【英文标题】:How to handle calendar popup using Selenium WebDriver with Java? 【发布时间】:2015-06-29 14:58:09 【问题描述】:如何使用 Selenium WebDriver 和 Java 从类似性别的日历弹出窗口中选择日期(即日历中的 24/04/2015)?
我试过这个:
package com.Automation;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class CalendarPopup
/**
* @param args
*/
public static void main(String[] args)
WebDriver driver = new FirefoxDriver();
driver.get("http://www.yatra.com/");
driver.findElement(By.id("//div[2]/ul[3]/li[1]/i")).click();
driver.findElement(By.id("a_2015_4_25")).click();
【问题讨论】:
这个问题已经在***上回答了,链接是:***.com/questions/21398575/… 【参考方案1】:您可以通过从 id 中选择一天来单击它,然后单击它
driver.findElement(By.id('a_2015_4_24')).click(); //use this format a_yyyy_m_d
您也可以通过单击日历箭头返回或前进:
driver.findElement(By.className('js_btnNext')).click() // click the "next" arrow
driver.findElement(By.className('js_btnPrev')).click() // click the "prev" arrow
请注意,您不能单击过去的日子或不可见的日子,而且当您单击该日子时,日历必须可见。
编辑:您在代码中错误地选择了元素,因为您通过将 xpath 传递给函数的 id 选择元素,它应该是这样的:
//....
driver.findElement(By.xpath("//div[2]/ul[3]/li[1]/i")).click();
driver.findElement(By.id('a_2015_4_24')).click();
//...
【讨论】:
不在 webdriver 的 API 中,您应该使用您的代码来获取您想要的日期,然后通过执行 "a" + year.toString() + "_" + 等来构建您的 id 字符串。跨度> 查看此答案以获取有关比较日期的更多信息***.com/questions/10118029/… 请记住,在 *** 中,您应该将最能回答您问题的答案标记为已接受以上是关于如何使用 Selenium WebDriver 和 Java 处理日历弹出窗口?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用PHP绑定设置Selenium(WebDriver和Server)
如何使用 Java 在 selenium webdriver 中打开新选项卡,或者如何使用 selenium webdriver 使用动作类在 selenium 中按 ctrl + T [重复]
如何使用 Selenium WebDriver 和 Java 处理日历弹出窗口?
如何使用selenium webdriver来判断一个网页加载完毕