如何使用 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来判断一个网页加载完毕

如何在 Python 上使用 selenium webdriver 和 browsermob 代理捕获网络流量?

如何使用 Selenium WebDriver 处理登录弹出窗口?