如何在 Selenium 测试中阻止第三方脚本?
How can I block third-party scripts on Selenium tests?
我的 Selenium 测试被测试不需要的第三方脚本拖慢了速度。
我怎样才能阻止他们?最好我想阻止对 localhost.
以外的任何地方的请求
网上其他地方提供的解决方案是:
- 通过编辑您的主机文件来阻止不需要的域(例如 *.facebook.com)。
- 通过 BrowserMob 路由所有测试,可以配置为过滤请求。
这两个选项对我来说似乎都太过分了。编辑主机文件会影响您的整个系统,使用 BrowserMob 会引入新的 problems.
还有另一种方法:使用 PAC 文件配置浏览器直接连接到本地主机,并尝试通过不可用的代理连接到其他所有内容。
硒代码(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)
}
我的 Selenium 测试被测试不需要的第三方脚本拖慢了速度。
我怎样才能阻止他们?最好我想阻止对 localhost.
以外的任何地方的请求网上其他地方提供的解决方案是:
- 通过编辑您的主机文件来阻止不需要的域(例如 *.facebook.com)。
- 通过 BrowserMob 路由所有测试,可以配置为过滤请求。
这两个选项对我来说似乎都太过分了。编辑主机文件会影响您的整个系统,使用 BrowserMob 会引入新的 problems.
还有另一种方法:使用 PAC 文件配置浏览器直接连接到本地主机,并尝试通过不可用的代理连接到其他所有内容。
硒代码(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)
}