我已经在机器人框架中编写了这个脚本。
Set Selenium Implicit Wait 10
## Init BrowserMob Proxy
${file} Join Path ${EXECDIR} browsermob-proxy-2.1.4 bin browsermob-proxy.bat
File Should Exist ${file}
Start Local Server ${file}
# Create dedicated proxy on BrowserMob Proxy
${BrowserMob_Proxy}= Create Proxy
# Configure Webdriver to use BrowserMob Proxy
${options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${options} add_argument --proxy\=${BrowserMob_Proxy}
Create WebDriver Chrome chrome_options=${options}
New Har google
Go To ${PAGE_URL}
Title Should Be Google
${har}= Get Har As Json
Create File ${EXECDIR}${/}file.har ${har}
Close All Browsers
Stop Local Server
但是当我尝试通过HAR分析器验证时,它会返回错误,指出文件中没有找到日志条目。
处理HAR文件时发现的错误: 在文件中找不到日志条目。
har的结果:
{"log": {"comment": "", "entries": [], "version": "1.2", "pages": [{"pageTimings": {"comment": ""}, "comment": "", "title": "google", "id": "google", "startedDateTime": "2017-03-23T10:26:27.317+08:00"}], "creator": {"comment": "", "version": "2.1.4", "name": "BrowserMob Proxy"}}}
答案 0 :(得分:0)
从描述中可以清楚地看到,您尝试访问的网址无论是否有代理都可以访问。代理的目的是将服务器作为记录/操纵浏览器与其目的地之间流量的手段。
以下代码示例已经过测试并确认可以使用。这是stackoverflow post中的变体。我在您的示例中看到的唯一区别是--proxy
应为--proxy-server
Open Chrome Using Create WebDriver Keyword
${options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${options} add_argument --proxy-server\=localhost:8080
Create WebDriver Chrome chrome_options=${options}
Go To https://stackoverflow.com
在聊天中进行了一些讨论之后,我们得出除了以上内容之外,还可以使用以下构造设置代理端口:
&{port} Create Dictionary port=8084
${BrowserMob_Proxy}= Create Proxy ${port}
由于知道代理与已知的BrowserMob在同一主机上运行且代理端口已知,因此现在可以指定ChromeOptions:
Call Method ${options} add_argument --proxy-server\=localhost:8084
然后可以将其与HAR生成代码组合。