修改 selenium webdriver 的参数

Posted

技术标签:

【中文标题】修改 selenium webdriver 的参数【英文标题】:Modify arguments of selenium webdriver 【发布时间】:2021-11-09 19:39:33 【问题描述】:

我正在尝试设置一个测试环境,以通过 selenium 测试电子应用的 appimage。它基本上可以工作,但我的论点有问题。如果没有 selenium,对 appimage 的通常调用是 app.AppImage --profile test 。但是,当使用以下脚本时,调用的是app.AppImage --enable-logging --remote-debugging-port=0 --user-data-dir=/tmp/some/path

from selenium import webdriver

chromedriver_service = webdriver.chrome.service.Service("./chromedriver")
chromedriver_service.start()

driver = webdriver.remote.webdriver.WebDriver(
    command_executor=chromedriver_service.service_url,
    desired_capabilities=
        "goog:chromeOptions": 
            "binary": "app.AppImage",
            "excludeSwitches": [
                "disable-background-networking",
                "disable-client-side-phishing-detection",
                "disable-default-apps",
                "disable-hang-monitor",
                "disable-popup-blocking",
                "disable-prompt-on-repost",
                "disable-sync",
                "enable-automation",
                "enable-blink-features",
                "log-level",
                "no-first-run",
                "no-service-autorun",
                "password-store",
                "test-type",
                "use-mock-keychain",
            ],
        ,
    ,
)

如何修改参数?

更重要:如何添加--profile test?显而易见的方法是将"args": ["--profile", "test"] 添加到chromeoptions。这不起作用。每个列表元素都将作为单独的参数处理。 不太重要:如何删除其他标志(主要是--user-data-dir=)?这似乎无法直接实现(参见here)。

更多信息:webdriver 版本为 85.0.4183.87。

【问题讨论】:

【参考方案1】:

您应该将 args 添加为:

args : ["--profile-directory=Profile 1","--profile=test"]

您想要删除的内容,将其添加到排除开关数组中

 "excludeSwitches": [

               "user-data-dir",
                ...remaining things
            ],

【讨论】:

应用程序需要空格分隔格式的参数,如--profile test。我不能改变格式,所以我不能使用--profile=test。如链接所示,排除开关内的user-data-dir 被忽略。该选项仍然存在。 @Marph remove equal 并将其作为“--profile test”给予它 它只是按原样发送每个元素 ["--profile test"] 被解释为一个参数,如app.AppImage "--profile test"。该应用需要空格分隔的参数,例如app.AppImage --profile test

以上是关于修改 selenium webdriver 的参数的主要内容,如果未能解决你的问题,请参考以下文章

Selenium webdriver:修改 navigator.webdriver 标志以防止硒检测

java+selenium webdriver怎么实现数据参数化

Cucumber / Capybara 错误:参数 [0] 未定义(Selenium::WebDriver::Error::JavascriptError)

Python Selenium.WebDriver 浏览器启动参数设置『Edge如何使用启动参数』

如何根据特定参数在 selenium webdriver 的文本框中插入值

获取 Selenium Webdriver 异常:无法解析远程响应:参数不正确