我正在使用Chrome浏览器来测试WebApp。
有时,页面加载时间过长。我需要停止下载或限制其下载时间。
在FireFox中,我知道PAGE_LOAD_STRATEGY = "eager"。
PAGE_LOAD_STRATEGY = "eager"
铬有类似的东西吗?
PS:driver.manage().timeouts().pageLoadTimeout()可以,但是之后对Webdriver的任何处理都将抛出TimeOutException。停止引导后,我需要获取页面的当前URL。
driver.manage().timeouts().pageLoadTimeout()
TimeOutException
ChromeDriver 77.0 (支持Chrome 77版本)现在支持 eager 作为 pageLoadStrategy 。
eager
已解决的问题1902:支持优先页面加载策略[Pri-2]
从Webdriver规格:
对于导致加载新文档的命令,该命令返回的点由 会话的页面加载策略确定 。
当Page Loading需要太多的时间,你需要停止下载的其他子资源(图片,CSS,JS等),你可以改变 pageLoadStrategy 通过webdriver。
Page Loading
pageLoadStrategy
webdriver
在撰写本文时, pageLoadStrategy 支持以下值:
normal
这种状态导致Selenium等待整个页面加载(下载并解析了html内容和子资源)。
这种状态导致Selenium等待DOMContentLoaded事件(仅下载和解析html内容)。
none
此策略使Selenium在完全接收初始页面内容(下载html内容)后立即返回。
默认情况下,Selenium加载页面时,页面会紧随。 normal pageLoadStrategy
Selenium
这是 pageLoadStrategy() 通过 DesiredCapabilities 类和 ChromeOptions 类的实例进行配置的代码块,如下所示:
pageLoadStrategy()
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(); } }
注 :pageLoadStrategy值 normal , eager 并且 none 是按要求webdriver的W3C编辑草稿,但pageLoadStrategy作为价值 eager 仍然是一个 WIP(工作正在进行中) 内 ChromeDriver实施。您可以在适用于Python的ChromedriverSelenium的“渴望”页面加载策略解决方法中找到详细的讨论
参考文献: