我正在使用带有Selenium库的RobotFramework为各种网站编写自动测试用例。我遇到了一个问题,由于从第三方URL加载速度慢,某些页面需要永久加载,因此我想阻止它们以加快测试执行速度。
但是,我仍然坚持通过Robot Framework中的BrowserMob实施该解决方案。有人可以帮忙吗?
到目前为止,我有以下代码:
Start Browser
## Init BrowserMob Proxy
${BMPATH} Join Path ${EXECDIR} browsermob-proxy-2.1.4 bin browsermob-proxy.bat
&{bmphost} Create Dictionary address=127.0.0.1 port=7070
Start Local Server ${BMPATH}
# Create dedicated proxy on BrowserMob Proxy
&{host} Create Dictionary address=127.0.0.1 port=7070
${BrowserMob_Proxy}= Create Proxy ${host}
#Blacklist URLS
Blacklist https://.*\\.google.com/.* 404
## Configure Webdriver to use BrowserMob Proxy
${options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${options} add_argument --proxy\=127.0.0.1:7070
#${proxy1}= Evaluate sys.modules['selenium.webdriver'].Proxy() sys, selenium.webdriver
#${proxy1.http_proxy}= Set Variable localhost:8888
Create WebDriver Chrome chrome_options=${options} #proxy=${BrowserMob_Proxy}
Go to https://www.google.com
目标是翻译此selenium / java代码:
private WebDriver initializeDriver() throws Exception {
// Start the server and get the selenium proxy object
ProxyServer server = new ProxyServer(proxy_port); // package net.lightbody.bmp.proxy
server.start();
server.setCaptureHeaders(true);
// Blacklist google analytics
server.blacklistRequests("https?://.*\\.google-analytics\\.com/.*", 410);
// Or whitelist what you need
server.whitelistRequests("https?://*.*.yoursite.com/.*. https://*.*.someOtherYourSite.*".split(","), 200);
Proxy proxy = server.seleniumProxy(); // Proxy is package org.openqa.selenium.Proxy
// configure it as a desired capability
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, proxy);
// start the driver ;
Webdriver driver = new FirefoxDriver(capabilities);
return driver;
我现在拥有的代码可创建服务器,代理并打开chrome浏览器,但无法将google.com列入黑名单,反正也无法打开页面。尝试了多个regexp表达式,但都失败了,但是我认为该错误是在此之前的某个地方发生的,无论是通过创建代理/服务器的方式还是将黑名单URL的方式都是错误的。
有人在RF上成功实施此解决方案吗?有人可以告诉我我所缺少的吗?
谢谢
答案 0 :(得分:1)
对于可能需要此服务的任何人,解决方案如下:
Start Browser
[Documentation] Start browser
Set Selenium Implicit Wait 10
${BMPATH} Join Path ${EXECDIR} browsermob-proxy-2.1.4 bin browsermob-proxy.bat
Start Local Server ${BMPATH}
## Create dedicated proxy on BrowserMob Proxy
&{host} Create Dictionary port=7070
${BrowserMob_Proxy}= Create Proxy ${host}
Blacklist .*\/\/.*google.* 200
## Configure Webdriver to use BrowserMob Proxy
${options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${options} add_argument --start-maximized
Call Method ${options} add_argument --proxy-server\=localhost:7070
Create WebDriver Chrome chrome_options=${options}
这将最大程度地启动chrome浏览器,并通过BMP路由流量。 黑名单行中的正则表达式表示它将阻止所有包含“ google”的URL并返回状态200(可以随意更改)。