如何将Chrome浏览器配置为在Robot Framework的Selenium2Library中通过代理?

时间:2017-01-29 06:27:33

标签: selenium-webdriver selenium-chromedriver robotframework

我在Create Webdriver中看到了Firefox代理的例子。但是,我不知道如何在Chrome上实现这一点。

编辑此问题以在我的机器中显示已安装软件包的版本:

  • ChromeDriver 2.25.426935
  • Google Chrome版本56.0.2924.87(64位)
  • robotframework(3.0)
  • robotframework-selenium2library(1.8.0)
  • selenium(3.0.2)

2 个答案:

答案 0 :(得分:3)

ChromeDriver也支持使用预定义代理,但您必须将其指定为ChromeOptions对象中的命令行参数,您可以在创建ChromeDriver时传递该参数。请参阅此答案,了解如何在python中执行此操作,例如:https://stackoverflow.com/a/11821751/7433999

当使用Selenium2Library和Create Webdriver关键字时,如果您以正确的形式构造chrome_options字典,并将其传递给关键字,则应该可以实现相同的效果。

这样的事情可行:

${args}=                | Create List       | --proxy-server=1.2.3.4:8080
${chrome_options}=      | Create Dictionary | args=${args}
Create WebDriver        | Chrome            | chrome_options=${chrome_options}

答案 1 :(得分:1)

要在 RobotFramework 中使用 ChromeOptions,您可能需要执行以下操作:

./project_root/my_library.py

from typing import Union
from selenium.webdriver.chrome.options import Options
def Get_Proxy_Option(url: str, port: Union[int, str]) -> Options:
    options = Options()
    options.add_argument(f"--proxy-server={url}:{port}")
    return options

./project_root/my_testcase.robot

*** Settings ***
Library    SeleniumLibrary
Library    ./my_library.py


*** Keywords ***
Open Browser With Proxy
    [Arguments]    ${browser_url}    ${proxy_url}=url.to.proxy    ${proxy_port}=8080
    ${options}=    Get_Proxy_Options    @{ext_paths}    url=${proxy_url}    port=${proxy_port}
    Open Browser    ${url}    Chrome    options=${options}

参考:https://selenium-python.readthedocs.io/api.html#selenium.webdriver.chrome.options.Options.add_argument