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

Inv*_*nvy 59 java webdriver time-wait selenium-webdriver

get()navigate()方法有什么区别?是否有任何此方法或其他方法等待加载页面内容?我真正需要的是像selenium WaitForPageToLoadWaitForPageToLoad webdriverwebdriver` 这样的东西.

有什么建议?

Mat*_*all 100

导航

你想要用WebDriver做的第一件事就是导航到一个页面.通常的方法是调用get:

driver.get("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)

onload在将控件返回到测试或脚本之前,WebDriver将等待页面完全加载(即事件已触发).值得注意的是,如果您的页面在加载时使用了大量AJAX,那么WebDriver可能不知道它何时完全加载.如果您需要确保这些页面已满载,那么您可以使用waits.

导航:历史和位置

之前,我们介绍了使用get命令导航到页面(driver.get("http://www.example.com"))正如您所见,WebDriver有许多较小的,以任务为中心的界面,导航是一项有用的任务.因为加载页面是一个基本要求,所以这样做的方法存在于主WebDriver接口上,但它只是一个同义词:

driver.navigate().to("http://www.example.com");
Run Code Online (Sandbox Code Playgroud)

重申:navigate().to()get()做同样的事情.一个比另一个更容易打字!

navigate接口也暴露向后移动浏览器的历史记录的功能并转发:

driver.navigate().forward();
driver.navigate().back();
Run Code Online (Sandbox Code Playgroud)

(重点补充)

  • @comodoro自2011年4月这个答案已经存在[互联网档案馆不显示2014年之前为(非官方)硒教程页面什么(https://web.archive.org/web/*/http: //www.seleniumeasy.com/selenium-tutorials/difference-between-webdriver-get-and-navigate)您是否确定seleniumeasy.com是原始来源?`:)` (8认同)

Man*_*anu 17

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

navigate().to()get()做同样的事情.

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

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

navigate().to() 通过更改URL来导航到页面,例如进行前进/后退导航.

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

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

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

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


Arp*_*ini 10

driver.get():它曾经用于去特定的网站,但是它没有维护浏览器历史记录和cookies所以,我们不能使用前进和后退按钮,如果我们点击它,页面将无法获得时间表

driver.navigate():它用于访问特定网站,但它维护浏览器历史记录和cookie,因此我们可以使用前进和后退按钮在Testcase编码期间在页面之间导航