我正在使用java selenium webdriver创建一些Web测试,但我必须测试的页面大部分是动态加载的。幸运的是,当在网页上加载某些内容时会触发事件。
我想使用selenium webdriver检测这些事件,但我认为它本身不可能。我已经查看了EventFiringWebDriver
的文档,但这看起来只适用于selenium创建的事件。
我应该使用隐式等待吗?
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
答案 0 :(得分:2)
implicitlyWait
表示driver
将尝试在您的示例中将元素定位到指定的时间,10秒。添加它总是一个好主意,您只需要为每个WebDriver
实例执行一次。
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
请注意,implicitlyWait
将确保DOM中的元素存在。如果您需要与元素交互它可能不够好,您需要元素可见。在这些情况下,您可以使用Expected Conditions
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("id")));
// do something with the element
这将等待元素的指定时间到可见,并将返回与driver.findElement
类似的元素。 wait
对象可以设置一次,但每次要等待条件时都需要调用第二行。