Java 有没有一种方法可以让隐式等待加载块UI类?

Java 有没有一种方法可以让隐式等待加载块UI类?,java,selenium-webdriver,automation,Java,Selenium Webdriver,Automation,所以我公司的软件有一个UI拦截器,这是什么?这是一个加载屏幕,它冻结屏幕,直到加载所有元素。问题是有时会出现,有时不会,XPath总是取决于路径。此外,页面可以显示为已加载,但可能会显示块UI(因此从技术上讲,页面可以加载,但不可单击)。因此,Web驱动程序尝试单击它,而不是单击此UI阻止程序 有没有一种方法可以创建这样一个方法:这个类在驱动程序每次应该引导时都会显示,直到它在整个项目中消失 您可以使用Selenium等待直到元素消失。所以它会一直等到你的加载器不可见 更新:您可以使用isDis

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

有没有一种方法可以创建这样一个方法:这个类在驱动程序每次应该引导时都会显示,直到它在整个项目中消失


您可以使用
Selenium等待
直到
元素消失
。所以它会一直等到你的加载器不可见

更新:您可以使用
isDisplayed()
方法确定是否显示加载程序

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

回答得好,你可以添加更多的参考资料。。。例如,OP可能希望等待
元素可选择
…您将如何在if上使用它?例如,如果元素出现,请使用此wait-else,继续处理?@bsullit您可以在我在回答中更新时使用isDisplayed()方法,请查看是,现在它显示以下错误:TimeoutException:预期条件失败:等待元素不再可见:By.id:mainBody(尝试了10秒)间隔500毫秒)。我认为它正在等待它被显示,但由于它没有出现,它抛出了这个错误。谢谢你的帮助。是的,你现在可以增加超时异常时间,我为它增加了10毫秒,但它可以根据加载程序持续加载的时间而变化,所以你可以将它增加到100或尝试20