修改 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如何使用启动参数』