【问题标题】:Is there a way to make a Implicit wait for a loading Block UI class?有没有办法让一个隐式等待加载块 UI 类?
【发布时间】:2019-06-10 18:38:33
【问题描述】:

1所以我公司的软件有一个UI拦截器,这是什么?这是一个加载屏幕,它会冻结屏幕,直到所有元素都加载完毕。问题是有时出现有时不出现,并且 XPath 始终取决于路径。此外,页面可以显示为已加载,但可能会出现 Block UI(因此从技术上讲,该页面可以加载但不可点击)。因此,Web 驱动程序尝试单击它,而是单击此 UI 阻止程序。

有没有办法创建一个方法,每次驱动程序都应该显示这个类,直到它在整个项目中消失?

loading image sample

【问题讨论】:

    标签: java selenium-webdriver automation


    【解决方案1】:

    您可以使用Selenium wait 直到element disappears。所以它会等到你的加载器不可见。

    更新:您可以使用isDisplayed() 方法来查看是否显示了loader。

    if( driver.findElement(By.id("idOfLoader")).isDisplayed()){
     new WebDriverWait(driver, 10).until(ExpectedConditions.invisibilityOfElementLocated(By.id("idOfLoader")));
    }
    

    【讨论】:

    • 好答案,您可以添加更多引用...例如,OP 可能要等待elementToBeClickable...
    • 你会如何在 if 上使用它?例如 IF 元素出现使用此等待 - 否则,继续该过程?
    • @bsullit 您可以使用 isDisplayed() 方法,因为我在我的答案中更新了,请看一下
    • 是的,现在它显示此错误:TimeoutException:预期条件失败:等待元素不再可见:By.id:mainBody(尝试 10 秒,间隔 500 毫秒)。我认为它正在等待它显示,但由于它没有出现它会引发此错误。谢谢你顺便帮我。
    • 是的,您现在可以增加超时异常时间,我为它添加了 10 毫秒,但它可能会根据加载程序持续加载的时间而有所不同,因此您可以将其增加到 100 或尝试 20
    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 2013-10-24
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2019-08-19
    相关资源
    最近更新 更多