找不到BrowserMobProxy With Robot Framework的日志条目

时间:2017-03-23 02:24:02

标签: python python-2.7 robotframework browsermob-proxy

我已经在机器人框架中编写了这个脚本。

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"}}}

1 个答案:

答案 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生成代码组合。