如何使用带 Java 的 Selenium WebDriver 处理日历弹出窗口?

How to handle calendar popup using Selenium WebDriver with Java?

如何使用带有 Java 的 Selenium WebDriver select 从像这种性别的日历弹出窗口中约会(即日历中的 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();
    }
}

您可以通过从其 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();
//...