修改 selenium webdriver 的参数

分享于2022年07月17日 electron python selenium selenium-chromedriver selenium-webdriver 问答
【问题标题】:修改 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