Selenium WebDriver页面事件监听

时间:2017-03-28 06:35:24

标签: java selenium testing web selenium-webdriver

我正在使用java selenium webdriver创建一些Web测试,但我必须测试的页面大部分是动态加载的。幸运的是,当在网页上加载某些内容时会触发事件。

我想使用selenium webdriver检测这些事件,但我认为它本身不可能。我已经查看了EventFiringWebDriver的文档,但这看起来只适用于selenium创建的事件。

我应该使用隐式等待吗?

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

1 个答案:

答案 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对象可以设置一次,但每次要等待条件时都需要调用第二行。