python - 使用python从selenium chrome webdriver启动时如何在隐身模式下添加扩展
问题描述
我们正在使用 selenium python webdriver 进行一些测试,我们需要在隐身模式下打开一个 url 并启用一个已安装的扩展,然后执行一些操作。
我的发现:
- 在隐身模式下加载扩展不起作用
- 关闭 icgnito 模式时加载扩展程序
验证了这么多关于堆栈溢出的帖子,没有任何效果。尝试下面的代码“
path = os.path.dirname(r"C:\Users\ab\AppData\Local\Google\Chrome\User Data\Default\Extensions\jfpmbokkdeapjommajdfmmheiiakdlgo\0.1.7_0\manifest.json")
options = webdriver.ChromeOptions()
options.add_argument('--incognito')
options.add_argument("--load-extension={path}")
driver = webdriver.Chrome(chrome_options=options, executable_path='C:\chromedriver_win32\chromedriver.exe')
driver.maximize_window()
driver.get(xxxxxxxx)
哪个抛出错误无法加载 manifest.json 丢失或不可读。但是我已经确保路径是正确的。
任何建议请如何在隐身模式下打开 chrome 驱动程序时加载扩展程序?
解决方案
而是将所需的 cookie/扩展加载为 chrome 选项的一部分,其他选项是使用 chrome 配置文件。检查我在这篇文章中的答案
有关配置文件及其工作方式的更多信息,请参阅此处
这是在隐身模式下打开扩展程序的逻辑。
Python:
# driver.get("chrome://extensions/?id=extion_name_goes_here"); # <=== general snippet see below example
# driver.get("chrome://extensions/?id=jfpmbokkdeapjommajdfmmheiiakdlgo")
# select allow in incognito mode checkbox
driver.execute_script("return document.querySelector('extensions-manager').shadowRoot.querySelector('#viewManager > extensions-detail-view.active').shadowRoot.querySelector('div#container.page-container > div.page-content > div#options-section extensions-toggle-row#allow-incognito').shadowRoot.querySelector('label#label input').click()");
有关上面使用的 js 的更多信息,请参阅我在这篇文章中的回答。
推荐阅读
- npm - 我可以使用 Sudo 安装 NPM 包吗?
- ios - 在 iPad 上隐藏的 TabBar (Swift 4)
- c# - E*Trade API 在获取访问令牌时经常返回 HTTP 401 Unauthorized 但并非总是如此
- flutter - 在 Dart 上创建函数作为参数时出错
- r - 如果多列匹配,R 从一个数据帧复制到另一个数据帧
- angular - 将异常跟踪从角度添加到应用洞察力
- python - 在 Python 中,要制作可变对象的两个或多个副本,除了 deepcopy 的 deepcopy(带备忘录)之外,还有其他方法吗?
- xcode - xCode 和 bitbucket,合并分支到 master
- reactjs - onlineUrs.map 不是 React Js 前端的函数
- wix - 从自定义操作设置属性?