如何在Selenium WebDriver中读取浏览器状态栏文本

3

有人知道如何使用Selenium WebDriver读取FireFox浏览器状态栏文本吗?我想知道是否完全加载了整个网页。

如果有其他方法,请给我建议。是否可以调用任何JavaScript(将从我的Java程序返回Firefox状态栏文本)?

另外,我如何验证在网页上查找的webelement是否存在?

谢谢!

1个回答

1

我认为使用WebDriver无法读取FireFox状态栏。

当你执行webdriver.get()时,它会等待“onload”事件触发后再将控制返回给你的测试或脚本。然而,如果你的页面使用大量AJAX来加载页面内容,并且“onload”事件在浏览器中仍在显示内容时触发,那么这可能还不够好。

如果你需要确保这样的页面完全加载,则解决方案是使用“等待”。

你可以等待特定的元素:

Wait<WebDriver> wait = new WebDriverWait(driver, 10);
wait.until(visibilityOfElementLocated(By.id("target"))); 

查看:http://seleniumexamples.com/blog/examples/selenium-2-examples/

或者尝试等待Ajax完成任何挂起的请求:

查看:http://blog.activelylazy.co.uk/2010/05/05/testing-asynchronous-applications-with-webdriver/


Selenium 2具有隐式等待功能,这意味着仅使用findElement将等待目标元素出现并可见。 - Dave Hunt
@Dave,如果那个元素没有显示出来,会抛出找不到该元素的异常吗? - Paresh
你是正确的。当我从Google收集搜索结果时,我遇到了问题。现在我认为它正在使用Ajex,因此我的脚本出现了故障。现在我暂时使用简单的while循环- while(driver.findElements(By.linkText("Google Home")) == null && driver.findElements(By.linkText("About Google")) == null && driver.findElements(By.linkText("Advertising Programs")) == null) { driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); } - Paresh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接