【发布时间】:2019-03-12 23:31:09
【问题描述】:
我正在使用带有 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 列入黑名单并打开页面。尝试了多个正则表达式,都失败了,但我认为错误是在那之前的某个地方出现的,无论是在创建代理/服务器的方式上还是将 URL 列入黑名单的方式都不正确。
有没有人成功地在 RF 中实施此解决方案?有人可以告诉我我错过了什么吗?
谢谢
【问题讨论】:
-
您是否尝试过手动设置浏览器以指向 BrowserMob 以查看规则是否适用于该场景?
-
抱歉@A.Kootstra 的延迟回答,但优先级发生了变化,直到现在才被遗忘。我设法通过您的建议解决了问题,代理设置不起作用。谢谢!将为可能需要此代码的任何人上传正确的代码
标签: robotframework browsermob-proxy browsermob