【问题标题】:driver.get(url) vs driver.navigate().to(url);driver.get(url) 与 driver.navigate().to(url);
【发布时间】:2020-11-16 00:05:59
【问题描述】:

谷歌的回答: get() 用于导航特定的 URL(网站)并等待页面加载。司机。 navigate() 用于导航到特定的 URL,不等待页面加载。

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

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

【问题讨论】:

    标签: java selenium selenium-webdriver webdriver


    【解决方案1】:

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

    我们也可以使用driver.navigate().to(“url’);来加载网页。就行为而言,这两个命令的工作方式相同。但navigate().to()还具有navigate().forward()navigate().back()navigate().refresh()等其他功能。

    所以区别在于driver.get() 从不存储历史,而driver.navigate().to() 存储浏览器历史,以便用于其他命令前进和后退等。

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

    更多信息在这里 - Difference between webdriver.get() and webdriver.navigate()

    【讨论】:

    • 所以这两种方法一般都等到所有对象都加载完毕。
    • 是的,据我了解..!
    【解决方案2】:

    简单来说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()abstraction,它允许WebDriver 实例,即driver 访问浏览器的历史记录以及导航到给定的URL。方法及用法如下:

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

      driver.navigate().to("https://www.google.com/");
      
    • to(java.net.URL url):to(String) 的重载版本,可以轻松传递 URL。

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

      driver.navigate().refresh();
      
    • back():将浏览器历史记录中的单个“项目”移回。

      driver.navigate().back();
      
    • forward():在浏览器的历史记录中向前移动一个“项目”。

      driver.navigate().forward();
      

    【讨论】:

    • 据说我的查询是在谷歌中,导航方法不会等到页面加载,这与 Selenium 文档中添加的点不符。请帮我理解。
    • @mpmuthu 对于get()navigate() 的不同做法,不要留下任何想象。相反,请不断将WebDriver 实例与浏览上下文 同步。见:Do we have any generic function to check if page has completely loaded in Selenium
    • @mpmuthu 好消息!!!很高兴能帮到你!!!请accept answer 点击我的 answer 旁边的空心刻度线,它就在 votedown 箭头下方,这样刻度线就会变成 绿色.
    猜你喜欢
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    相关资源
    最近更新 更多