webdriver.get() 和 webdriver.navigate() 之间的区别

和 方法有什么区别?是否有任何此方法或其他方法等待页面内容加载?我真正需要的是像Selenium 1.0这样的东西,但要通过.get()navigate()WaitForPageToLoadwebdriver

有什么建议吗?


答案 1

导航

要使用 WebDriver 执行的第一件事是导航到页面。执行此操作的正常方法是调用 :get

driver.get("http://www.google.com");

WebDriver 将等到页面完全加载(即事件已触发)后,再将控制权返回给测试或脚本。值得注意的是,如果你的页面在加载时使用了大量的AJAX,那么WebDriver可能不知道它何时完全加载。如果您需要确保此类页面已完全加载,则可以使用。onloadwaits

导航:历史和位置

前面,我们介绍了使用命令 () 导航到页面的过程,如您所见,WebDriver 具有许多较小的、以任务为中心的界面,导航是一项有用的任务。由于加载页面是一项基本要求,因此执行此操作的方法存在于 WebDriver 主界面上,但它只是以下各项的同义词:getdriver.get("http://www.example.com")

driver.navigate().to("http://www.example.com");

重申一下:navigate().to()get() 执行完全相同的操作。一个比另一个更容易打字!

该界面还公开了在浏览器历史记录中来回移动的功能:navigate

driver.navigate().forward();
driver.navigate().back();

(着重号后加)


答案 2

他们似乎都导航到给定的网页并引用@matt答案:

navigate().to()并做完全相同的事情。get()

单页应用程序是一个例外。

这两种方法之间的区别不在于它们的行为,而在于应用程序的工作方式以及浏览器如何处理它的行为。

navigate().to()通过更改 URL 导航到页面,就像执行向前/向后导航一样。

而, 刷新页面以更改 URL。get()

因此,在应用程序域发生更改的情况下,这两种方法的行为都类似。也就是说,在这两种情况下都会刷新页面。但是,在单页应用程序中,虽然不刷新页面,但要刷新。navigate().to()get()

此外,这是由于应用程序被刷新而使用浏览器历史记录时丢失的原因。get()

最初回答:https://stackoverflow.com/a/33868976/3619412


推荐