当前位置: 首页 > 知识库问答 >
问题:

Chrome驱动程序的页面加载策略(更新到Selenium V3.12.0)

邢永安
2023-03-14

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

P.S.:driver.manage().timeouts().PageLoadTimeout()有效,但之后对Webdriver的任何处理都会抛出TimeoutException。我需要在停止其引导后获取页面的当前url。

共有1个答案

毕黎昕
2023-03-14

ChromeDriver77.0(支持Chrome77版)现在支持Eager作为PageLoadStrategy。

解决问题1902:支持热切页面加载策略[Pri-2]

来自Webdriver规范:

页面加载花费太多时间,并且需要停止下载其他子资源(图像、css、js等)时,可以通过WebDriver更改PageLoadStrategy

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

>

  • 正常

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

    渴望

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

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

    下面是通过DesiredCapabilities类和ChromeOptions类的实例配置PageLoadStrategy()的代码块,如下所示::

    >

  • 使用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();
        }
    }
    
    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();
        }
    }
    
    • WebDriver导航
    • WebDriver页面加载策略
    • WHATWG文档readyStateChange/Readiness

  •  类似资料:
    • 问题内容: 我正在使用Chrome浏览器来测试WebApp。 有时,页面加载时间过长。我需要停止下载或限制其下载时间。 在FireFox中,我知道。 铬有类似的东西吗? PS:可以,但是之后对Webdriver的任何处理都将抛出。停止引导后,我需要获取页面的当前URL。 问题答案: ChromeDriver 77.0 (支持Chrome 77版本)现在支持 作为 pageLoadStrategy

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

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

    • 我正在尝试使用Selenium web驱动程序。我正在使用asp。net mvc。我已经设置了一个非常基本的测试。我基本上只是想打开浏览器。 但当我运行测试我得到这个错误消息 结果消息: 文件c:\chromedriver.exe\chromedriver.exe不存在。驱动程序可以在http://chromedriver.storage.googleapis.com/index.html下载 我

    • 我有一个SNS(用KMS加密)是由两个lambda订阅的。我正在尝试向其中一个订阅添加重新驱动策略。问题中的DLQ已加密。 添加重新驱动策略会给我一个错误‘无法检查Amazon SQS队列权限。请确保队列存在,并且您的帐户具有读取队列属性的权限。要允许Amazon SNS主题向Amazon SQS队列发送消息,您必须创建Amazon SQS队列策略‘