如何在JAVA的selenium WebDriver中禁用图像/视频下载以及如何禁用CSS

问题描述 投票:0回答:1

我现在使用的是 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; }
google-chrome selenium-webdriver selenium-chromedriver webdriver
1个回答
0
投票

作为 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;
    }
© www.soinside.com 2019 - 2024. All rights reserved.