Python 未找到具有Robot Framework的BrowserMobProxy的日志项

Python 未找到具有Robot Framework的BrowserMobProxy的日志项,python,python-2.7,robotframework,browsermob-proxy,Python,Python 2.7,Robotframework,Browsermob Proxy,我已经在robot框架中编写了这个脚本 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 p

我已经在robot框架中编写了这个脚本

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 Analyzer进行验证时,它返回一个错误,表示在文件中找不到日志条目

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

从描述中可以清楚地看出,您试图访问的URL在使用代理和不使用代理的情况下都是可访问的。代理的目的是将服务器作为记录/处理浏览器与其目标之间流量的手段

下面的代码示例已经过测试并确认有效。这是一个变化,发现在这方面。我在您的示例中看到的唯一区别是
--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
在chat中进行了一些讨论之后,我们得出结论,除了上述内容之外,还可以使用以下结构设置代理端口:

&{port}    Create Dictionary    port=8084
${BrowserMob_Proxy}=    Create Proxy    ${port}
已知代理与BrowserMob在同一主机上运行,并且已知代理端口,现在可以指定ChromeOptions:

Call Method    ${options}    add_argument    --proxy-server\=localhost:8084

然后可以将其与HAR生成代码结合起来。

从描述中可以清楚地看出,您试图访问的URL在使用代理和不使用代理的情况下都是可访问的。代理的目的是将服务器作为记录/处理浏览器与其目标之间流量的手段

下面的代码示例已经过测试并确认有效。这是一个变化,发现在这方面。我在您的示例中看到的唯一区别是
--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
在chat中进行了一些讨论之后,我们得出结论,除了上述内容之外,还可以使用以下结构设置代理端口:

&{port}    Create Dictionary    port=8084
${BrowserMob_Proxy}=    Create Proxy    ${port}
已知代理与BrowserMob在同一主机上运行,并且已知代理端口,现在可以指定ChromeOptions:

Call Method    ${options}    add_argument    --proxy-server\=localhost:8084

然后可以将其与HAR生成代码结合使用。

浏览器部分是否工作?即,Google页面是否已成功加载?谷歌是否只能通过代理服务器访问,还是也可以直接连接?浏览器已成功访问谷歌。两者都可以访问google。如果我尝试使用--proxy server,那么我就无法访问该页面。浏览器部分工作吗?即,Google页面是否已成功加载?谷歌是否只能通过代理服务器访问,还是也可以直接连接?浏览器已成功访问谷歌。两者都可以访问google。如果我尝试使用--proxy server,那么我就无法访问该页面。谢谢你的回答。我尝试过这个选项,但它在chrome上返回错误<代码>无法通过以下网址访问此网站:https://stackoverflow.com/ 可能暂时关闭,或者可能已永久移动到新的web地址。ERR_TUNNEL_CONNECTION_FAILED您是否验证了直接在浏览器中配置时代理是否正常工作?出现此错误
无法访问位于的网页http://localhost:8080/ 可能暂时关闭,或者可能已永久移动到新的web地址。ERR_NO_SUPPORTED_proxy
本地主机地址是我自己的代理的地址。在您的示例中,这应该是
${BrowserMob\u Proxy}
。您只需将参数名称更改为
--proxy server
,重点是您自己的示例中缺少的
-server
部分。看起来端口配置不正确。感谢您的回答。我尝试过这个选项,但它在chrome上返回错误<代码>无法通过以下网址访问此网站:https://stackoverflow.com/ 可能暂时关闭,或者可能已永久移动到新的web地址。ERR_TUNNEL_CONNECTION_FAILED您是否验证了直接在浏览器中配置时代理是否正常工作?出现此错误
无法访问位于的网页http://localhost:8080/ 可能暂时关闭,或者可能已永久移动到新的web地址。ERR_NO_SUPPORTED_proxy
本地主机地址是我自己的代理的地址。在您的示例中,这应该是
${BrowserMob\u Proxy}
。您只需将参数名称更改为
--proxy server
,重点放在您自己的示例中缺少的
-server
部分。看起来端口配置不正确。