我现在使用的是 Chrome WebDriver 最新版本(版本 129.0.6668.59(官方版本)(64 位))。 Chrome 驱动程序版本 129.0.6668.58
我想用最少的硬件资源获取任何 URL(Youtube、Instagram、TikTok、博客、新闻等)的标题或头部。有些页面,例如 Youtube、Instagram、TikTok,通过 JavaScript 动态加载其标题或头部。因此,如果与标题或头部相关,我需要运行 javascript 文件。由于很难找到与标题相关的 js 文件,因此我可能需要运行所有可用的 js 文件。
不管怎样,我只想用最少的硬件资源获得一个标题或头部(通常是 h1 或 h2 标签)。我应该如何设置 selenium ChromeOptions 才能获得正确的结果?
目前,我正在使用以下选项。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments(/*"--headless=new", */
"--disable-web-security",
"--allow-running-insecure-content",
"--disable-site-isolation-trials",
"--disable-popup-blocking",
"--disable-features=IsolateOrigins,site-per-process",
"--blink-settings=imagesEnabled=false",
"--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
"--disable-software-rasterizer",
"--disable-blink-features",
"--disable-browser-side-navigation",
"--window-size=1200,640",
"--disable-gpu",
"--disable-notifications",
"--disable-extensions",
"--ignore-certificate-errors",
"--remote-allow-origins=*",
"--no-sandbox",
"--disable-dev-shm-usage",
"--port=" + curPort);
// chromeOptions.setBrowserVersion("latest");
chromeOptions.setPageLoadStrategy(PageLoadStrategy.EAGER);
chromeOptions.setAcceptInsecureCerts(true);
Duration duration = Duration.of(5, ChronoUnit.SECONDS);
chromeOptions.setScriptTimeout(duration);
chromeOptions.setPageLoadTimeout(duration);
chromeOptions.setImplicitWaitTimeout(duration);
chromeOptions.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.DISMISS_AND_NOTIFY);
curPort++;
if (curPort > MAX_PORT) { curPort = MIN_PORT; }
作为 Chrome 选项的一部分,我们可以 1. 使用无头模式以实现最少的资源使用 2. 对 PageLoadStrategy 使用正常策略 3. 禁用图像以使用最少的资源:
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments(
"--headless=new", // Use headless mode for minimal resource usage
"--disable-web-security",
"--allow-running-insecure-content",
"--blink-settings=imagesEnabled=false", // Disable images to save resources
"--disable-gpu", // No GPU needed for non-rendering tasks
"--no-sandbox", // Avoid sandboxing for resource constraints
"--disable-software-rasterizer",
"--disable-extensions",
"--disable-notifications",
"--ignore-certificate-errors",
"--remote-allow-origins=*",
"--window-size=1200,640"
);
// Using NORMAL load strategy to allow full script execution
chromeOptions.setPageLoadStrategy(PageLoadStrategy.NORMAL);
chromeOptions.setAcceptInsecureCerts(true);
// Script, page load, and implicit wait timeouts
Duration timeoutDuration = Duration.ofSeconds(5);
chromeOptions.setScriptTimeout(timeoutDuration);
chromeOptions.setPageLoadTimeout(timeoutDuration);
chromeOptions.setImplicitWaitTimeout(timeoutDuration);
// Handle unexpected alerts
chromeOptions.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.DISMISS_AND_NOTIFY);
// Increment the port
curPort++;
if (curPort > MAX_PORT) {
curPort = MIN_PORT;
}