【问题标题】:JavaScript: Disable images in Selenium ChromeDriverJavaScript:禁用 Selenium ChromeDriver 中的图像
【发布时间】:2017-02-23 10:10:57
【问题描述】:

因为 Webdriver 在继续下一行之前等待整个页面加载,所以我想禁用图像会在网络慢时加快速度。

这是 Selenium Webdriver 网站中的示例 js 文件:

var webdriver = require('selenium-webdriver'),
    By = webdriver.By,
    until = webdriver.until;

var driver = new webdriver.Builder()
    .forBrowser('chrome')
    .build();

driver.get('http://www.google.com/ncr');
driver.findElement(By.name('q')).sendKeys('webdriver');
driver.findElement(By.name('btnG')).click();
driver.wait(until.titleIs('webdriver - Google Search'), 1000);
driver.quit();

如何在我的代码中禁用图像?

我在谷歌上搜索过这个问题,我只在 Python 中得到这个解决方案:Disable images in Selenium Python。

【问题讨论】:

    标签: javascript node.js selenium


    【解决方案1】:

    您可以将 optionsobject 传递给 WebdriverJS 的 Builder 以禁用图像:

    {
        prefs: {
            profile: {
                managed_default_content_settings: {
                    images: 2
                }
            }
        }
    }
    

    完整的例子是:

    const chromeDesktop = {
        prefs: {
            profile: {
                managed_default_content_settings: {
                    images: 2
                }
            }
        }
    };
    const { By, Builder, until } = require('selenium-webdriver');
    const driver = new Builder().withCapabilities(chromeDesktop).build();
    

    这绝对对我有用。

    【讨论】:

    • 对于 2017 年 7 月之后遇到的任何人,我发现它可以在 Chrome 61 中使用 default_content_setting_values。
    【解决方案2】:

    这里我给你不加载图像的代码。

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    chrome_options.add_experimental_option( "prefs", {'profile.managed_default_content_settings.images': 2})
    driver = webdriver.Chrome("chromedriver.exe",chrome_options=chrome_options)
    

    【讨论】:

    • 使用 JavaScript 有什么特殊原因吗?
    • 因为我现在的项目使用的是 JavaScript。我不想将我的代码更改为 JavaScript。顺便说一句,我不是 Python 专家。
    【解决方案3】:

    在高层次上,我看到了一些解决方案:

    • 将profile.managed_default_content_settings.images设置为2(我找不到对应的chromedriver文档,你可以google一下)。
    • 设置代理。通过请求图像文件时返回空数据的代理连接到您的页面。
    • 使用为您执行此操作的浏览器插件加载浏览器。某些东西(有点像被广告屏蔽的作品)可能已经可用。 (缺点:特定于浏览器的解决方案)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      相关资源
      最近更新 更多