我试图从日历中选择下个月,但无法这样做



这是我试图执行的代码。

driver.get("https://easemytrip.com/");
driver.findElement(By.id("ddate")).click(); 
driver.findElement(By.id("img2")).click();

我无法点击日历的下个月。这是 HTML 代码。

<div class="month">
<div id="dvprevious" class="dvnxt" runat="server">
<img id="img2" onclick="return FillcalendarV(03,2017);" alt="Arrow" src="img/left.png"/>
</div>
<div class="month2">Apr 2017</div>
<div class="month3">
<img id="img1" onclick="return FillcalendarV(05,2017);" alt="Arrow" src="img/right.png"/>
</div>
</div>

我的两个解决方法是强制鼠标单击项目位置。

WebElement elem = driver.findElement(By.id("id"));
    Actions action = new Actions(driver);
    action.moveToElement(elem).perform();
    action.moveToElement(elem).click().perform();

driver.findElement(By.id("id")).sendKeys(Keys.ENTER);

问题是呈现日历弹出窗口需要一秒钟,因此您需要短暂的暂停。我遇到的下一个问题是,您显然无法单击> img,因为它被容器 DIV 阻止了。所以,我只是点击了容器 DIV 它就工作了。下面的代码有效。

driver.get("https://easemytrip.com/");
driver.findElement(By.id("ddate")).click();
new WebDriverWait(driver, 3).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.month3"))).click();

以下代码将起作用。

    WebElement ele1 = driver.findElement(By.id("dvfarecal"));
    ele1.click();
    WebDriverWait wait = new WebDriverWait(driver, 5);
    WebElement ele2 = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//img[@src='img/right.png']")));
    ele2.click();
    driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
    WebElement date = driver.findElement(By.id("snd_3_10/05/2017"));
    date.click();

最新更新