提问者:小点点

驱动器. get(url)与驱动器.Navigate().to(url);


谷歌的答案:get()用于导航特定的URL(网站),并等待页面加载。驱动程序。导航()用于导航到特定的URL,而不是等待页面加载。

Selenium文档:文档的文档. readyState属性描述了当前文档的加载状态。默认情况下,WebDriver将暂停响应driver.get()(或)driver.Navigate().to()调用,直到文档就绪状态完成

我的查询在谷歌据说,导航方法不会等到页面加载,这与Selenium文档中添加的点不一致。请帮助我理解。


共3个答案

匿名用户

我们在运行脚本时做的第一件事就是打开浏览器并加载网页。我们通常使用driver. get("url");来加载网页。每次我们使用这个命令时,页面都会被刷新。

我们还可以使用river. Navigate().to("url');来加载网页。这两个命令在行为方面的工作方式相同。但是Navigate().to()还具有其他功能,例如Navigate()。转发()导航()。back()导航()。刷新()

所以不同的是river. get()从不存储历史记录,而river.Navigate().to()存储浏览器历史记录,以便用于前进和后退等其他命令。

在单页应用程序中,当Navigate(). to()通过更改URL(如前进/后退)导航到页面时,get()刷新页面。

更多信息在这里-webdriver. get()和webdriver.Navigate()之间的区别

匿名用户

简单来说,WebDriver接口中的get()方法扩展了SearchContext并定义为:

/**
 * Load a new web page in the current browser window. This is done using an HTTP POST operation,
 * and the method will block until the load is complete.
 * This will follow redirects issued either by the server or as a meta-redirect from within the
 * returned HTML.
 * Synonym for {@link org.openqa.selenium.WebDriver.Navigation#to(String)}.
 */
void get(String url);
    

因此,您可以使用:

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

另一方面,Navigate()是允许WebDriver实例(即驱动程序)访问浏览器历史记录以及导航到给定URL的抽象。方法和用法如下:

>

  • to(java. lang.String url):在当前浏览器窗口中加载新网页。

    driver.navigate().to("https://www.google.com/");
    

    to(java.net.URLurl):重载的to(String)版本,可以轻松传入URL。

    刷新():刷新当前页面。

    driver.navigate().refresh();
    

    back():移回浏览器历史记录中的单个“项目”。

    driver.navigate().back();
    

    转发():在浏览器的历史记录中向前移动单个“项目”。

    driver.navigate().forward();
    

  • 匿名用户

    //Convenient
    driver.get("https://selenium.dev");
    
    //Longer way
    driver.navigate().to("https://selenium.dev");
    

    28/08/2022

    两者没有区别,只是一个是长形式,一个是Java的短形式。

    https://www.selenium.dev/documentation/webdriver/browser/navigation/