当前位置: 首页 > 面试题库 >

Chrome驱动程序的页面加载策略(已更新至Selenium v​​3.12.0)

弓晔
2023-03-14
问题内容

我正在使用Chrome浏览器来测试WebApp。

有时,页面加载时间过长。我需要停止下载或限制其下载时间。

在FireFox中,我知道PAGE_LOAD_STRATEGY = "eager"

铬有类似的东西吗?

PS:driver.manage().timeouts().pageLoadTimeout()可以,但是之后对Webdriver的任何处理都将抛出TimeOutException。停止引导后,我需要获取页面的当前URL。


问题答案:

ChromeDriver 77.0 (支持Chrome 77版本)现在支持 eager 作为 pageLoadStrategy

已解决的问题1902:支持优先页面加载策略[Pri-2]

从Webdriver规格:

对于导致加载新文档的命令,该命令返回的点由 会话的页面加载策略确定

Page Loading需要太多的时间,你需要停止下载的其他子资源(图片,CSS,JS等),你可以改变 pageLoadStrategy
通过webdriver

在撰写本文时, pageLoadStrategy 支持以下值:

  1. normal

这种状态导致Selenium等待整个页面加载(下载并解析了html内容和子资源)。

  1. eager

这种状态导致Selenium等待DOMContentLoaded事件(仅下载和解析html内容)。

  1. none

此策略使Selenium在完全接收初始页面内容(下载html内容)后立即返回。

默认情况下,Selenium加载页面时,页面会紧随。 normal pageLoadStrategy

这是
pageLoadStrategy()

通过 DesiredCapabilities 类和 ChromeOptions 类的实例进行配置的代码块,如下所示:

  • 使用 DesiredCapabilities 类:
        package demo; //replace by your own package name

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.openqa.selenium.remote.DesiredCapabilities;

    public class A_Chrome_DCap_Options {

        public static void main(String[] args) {

            System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
            DesiredCapabilities dcap = new DesiredCapabilities();
            dcap.setCapability("pageLoadStrategy", "normal");
            ChromeOptions opt = new ChromeOptions();
            opt.merge(dcap);
            WebDriver driver = new ChromeDriver(opt);
            driver.get("https://www.google.com/");
            System.out.println(driver.getTitle());
            driver.quit();
        }
    }
  • 使用 ChromeOptions 类:
        package demo; //replace by your own package name

    import org.openqa.selenium.PageLoadStrategy;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;


    public class A_Chrome_Options_test {

        public static void main(String[] args) {

            System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
            ChromeOptions opt = new ChromeOptions();
            opt.setPageLoadStrategy(PageLoadStrategy.NORMAL);
            WebDriver driver = new ChromeDriver(opt);
            driver.get("https://www.google.com/");
            System.out.println(driver.getTitle());
            driver.quit();
        }
    }

pageLoadStrategynormaleager 并且 none 是按要求webdriver的W3C编辑草稿,但pageLoadStrategy作为价值 eager 仍然是一个 WIP(工作正在进行中)ChromeDriver实施。您可以在适用于Python的ChromedriverSelenium的“渴望”页面加载策略解决方法中找到详细的讨论

参考文献:

  • WebDriver导航
  • WebDriver页面加载策略
  • WhatWG Document readyStateChange /准备情况


 类似资料:
  • 我正在用Chrome浏览器测试WebApp。 P.S.:有效,但之后对Webdriver的任何处理都会抛出。我需要在停止其引导后获取页面的当前url。

  • 问题内容: 您好,我想将chrome驱动程序更新到最新版本,但ant会找到有关更新驱动程序的任何信息,只是有关安装它的信息。我需要怎么做才能将驱动程序更新到最新版本? 问题答案: chromedriver是一个独立的可执行文件。只需将您的现有版本替换为较新的版本即可。 从https://sites.google.com/a/chromium.org/chromedriver/downloads下载

  • 问题内容: 有人告诉我,加载JDBC驱动程序的首选方法是: 我知道,这对于从XML配置文件或用户输入中读取多个驱动程序之间的动态决策更好。我很好奇的是,调用此语句如何将指定的驱动程序加载到我们什至没有将生成的“ Class”对象存储在任何地方的环境中。JavaDocs条目说: 返回与具有给定字符串名称的类或接口关联的Class对象 在那种情况下,Java开发人员仅凭此语句如何设法促进驱动程序对象的

  • 我正在努力自动化一个网站,该网站有许多链接,这些链接通过JS事件加载新页面。基本上,有些元素是可点击的,单击一个会导致一些JavaScript运行,这会导致提交表单并路由到新页面。 现在,如果这些只是标准的HTML链接,就不会有问题,因为Selenium足够聪明,可以告诉您有一个新页面即将到来,并等待处理。但尽管如此,Selenium无法判断在这个实例中的点击是否会导致新页面加载,因此它不会等待,

  • 我正在使用Datastax Cassandra驱动程序,并设置了RetryPolicy,以便在主机不可用时重试。然而,我注意到它尽可能快地重试。我想将其更改为在重试之间有越来越大的延迟,而不是在集群陷入困境时对其进行重击。这对于过载的请求错误尤其重要,因为我确实希望在这些情况下重试,但会有很大的延迟。 哪里是实施延迟的正确地点,什么是正确的机制?我应该抛出一个