在Selenium 3.0中未选择具有跨度和图像的按钮

时间:2018-12-24 18:12:27

标签: selenium selenium-webdriver

在我成功尝试过的测试用例下,请保存并让我计划工作

  • 访问www.triphobo.com
  • 在“更新”框中单击“稍后”
  • 德克萨斯州休斯顿
  • 点击“计划新行程”按钮
  • 点击屏幕底部的“保存并让我计划”

此后,我得到了一个闪屏,然后实际的问题开始了。我无法同时点击两个选项:

  • 点击右上角的“跳过计划”
  • 再次在框中单击“跳过以计划”

下面是我的代码,但是Webdriver不能单击。我该怎么做才能单击“跳至计划”?

以下是跳至计划代码

WebElement skip = waitwait.until(ExpectedConditions.presenceOfElementLocated(
    By.xpath("//span[text()='Skip to plan ']")
));
//          action = new Actions(driver);
//          action.moveToElement(skip).perform();
//          action.click();
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", skip);
WebElement skipWindow = wait
wait.until(ExpectedConditions.presenceOfElementLocated(
    By.xpath("//button[text()='Skip to Plan']")
));
skipWindow.click();

错误消息:

  

org.openqa.selenium.TimeoutException:预期条件失败:等待元素的存在:By.xpath:// button [text()='Skip to Plan'](尝试使用40秒500毫秒间隔)

1 个答案:

答案 0 :(得分:0)

单击“保存并让我计划”时,它将打开容器/模型,而不是新窗口。您无需切换到另一个窗口来单击该元素。尝试以下代码:

WebElement skip = waitwait.until(ExpectedConditions.presenceOfElementLocated(
    cssSelector("#js_hotel_cm_container .close-hotel-combine"))

绝对可以。我发现使用CSS选择器而不是xpath的元素,因为它更快(至少以我的经验)。您也可以使用ID为js_hotel_cm_container的元素(而不是//span[text()='Skip to plan ']之后的元素)来使用xpath。