Selenium等待Element中的任何人可见

时间:2017-03-22 06:19:16

标签: java selenium selenium-webdriver webdriver

单击特定按钮时 - 我的测试站点将打开模态窗口。

但是打开的模态窗口不同,要么用modal window 1 or modal window 2

打开

两者都有不同的标题,不同的选项和不同的定位器。 现在我应该等到模态window open Either 1 or 2

是否可以等到一个模态窗口(WebElement)可见?

我在WebDriverWait方法中搜索过,但所有方法都要等到特定WebElement可见或可点击。

我无法找到更好的方法,等待其中任何一个可见。

你能否建议任何一种方法来解决这种情况?

2 个答案:

答案 0 :(得分:9)

您可以or expected conditions使用

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.or(
    ExpectedConditions.visibilityOfElementLocated(By.id("id1")),
    ExpectedConditions.visibilityOfElementLocated(By.id("id2"))
));

或使用cssSelector,

wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#id1, #id2"));

答案 1 :(得分:0)

要诱导 WebDriverWait 直到任一模态窗口 WebElement 可见,您可以使用 or() 子句如下:

new WebDriverWait(driver, 10).until(ExpectedConditions.or(
    ExpectedConditions.visibilityOfElementLocated(By.name("name_modalA_element")),
    ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath_modalB_element"))
));

使用 cssSelector,您可以使用逗号字符分隔元素,即 ,,如下所示:

new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("css_modalA_element, css_modalB_element"));

参考文献

您可以在以下位置找到一些相关的详细讨论: