1

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

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 文件时发现错误:在文件中找不到日志条目。

哈尔的结果:

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

1 回答 1

0

从描述中可以清楚地看出,您尝试访问的 URL 可以通过代理访问,也可以不通过代理访问。代理的目的是将服务器作为记录/操纵浏览器与其目的地之间流量的一种手段。

下面的代码示例已经过测试并确认可以工作。这是此stackoverflow 帖子中的一个变体。我在您的示例中看到的唯一区别是--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 生成代码相结合。

于 2017-03-23T12:27:17.067 回答