【问题标题】:Selenium Wait for anyone of Element to visibleSelenium 等待任何元素可见
【发布时间】:2017-08-14 02:55:03
【问题描述】:

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

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

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

是否可以等到任一模式窗口 (WebElement) 可见?

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

我找不到更好的方法来等待任何一个可见。

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

【问题讨论】:

  • 请分享Html标签和代码。
  • driver.findElement(By.xpath("//*[@id="docmnt"]/span[1]/button")).click(); WebElement ele2=driver.findElement(By.xpath("//*[@id="updocmnt"]/div/div/div[1]/h4")); WebElement ele3=driver.findElement(By.xpath("//*[@id="complete"]/div/div/div[1]")); WebDriverWait 等待 =new WebDriverWait(驱动程序, 50); wait.until(ExpectedConditions.visibilityOf(ele2));但我必须等到 ele2 或 ele3 的可见性

标签: java selenium selenium-webdriver webdriver


【解决方案1】:

你可以使用 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"));

【讨论】:

  • 当我使用该方法时,我得到了该方法,或者未定义类型 ExpectedConditions。任何想法为什么
  • @ShanmukhaBollapragada 您应该发布一个包含详细信息和代码的新问题。
  • (By.cssSelector("#id1, #id2")) );
【解决方案2】:

要诱导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"));

参考文献

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

【讨论】:

    猜你喜欢
    • 2019-10-21
    • 2019-11-02
    • 2020-05-20
    • 2017-08-07
    • 1970-01-01
    • 2021-09-05
    • 2014-05-03
    • 2021-11-04
    • 2014-05-31
    相关资源
    最近更新 更多