如何在Selenium测试中阻止第三方脚本?

时间:2016-10-19 05:41:41

标签: selenium selenium-webdriver integration-testing browsermob

我的Selenium测试因测试不需要的第三方脚本而变慢。

我该怎么阻止他们?我最好阻止对 localhost 的所有地方的请求。

1 个答案:

答案 0 :(得分:4)

在线提供的解决方案包括:

  • 通过编辑主机文件来阻止不需要的域名(例如* .facebook.com)。
  • 通过BrowserMob路由所有测试,可配置为过滤请求。

两种选择对我来说都有点矫枉过正。编辑主机文件会影响整个系统,使用BrowserMob会引入新的problems

以下是另一种方式:使用PAC文件将浏览器配置为直接连接到localhost,并尝试通过不可用的代理连接到其他所有内容。

Selenium代码(Java):

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
Proxy proxy = new Proxy();
proxy.setProxyType(Proxy.ProxyType.PAC);
proxy.setProxyAutoconfigUrl("http://localhost:8080/my-pac-file.pac");
capabilities.setCapability("proxy", proxy);
ChromeDriver driver = new ChromeDriver(INSTANCE, capabilities);

PAC文件:

function FindProxyForURL(url, host) {
    if (host.toLowerCase() === "localhost"){
      return "DIRECT"; // whitelisted
    }
  return "PROXY 127.0.0.1:9876"; // blocked (bad proxy)
}