【问题标题】:How to add extension in incognito mode when launched from selenium chrome webdriver with python使用python从selenium chrome webdriver启动时如何在隐身模式下添加扩展
【发布时间】:2019-06-01 11:59:58
【问题描述】:

我们正在使用 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 驱动程序时加载扩展?

【问题讨论】:

  • 是否以隐身模式打开带有预安装扩展程序的配置文件,你可以吗?
  • 你好@supputuri 你好吗?实际上,我阅读了一些他们在谈论个人资料的帖子,但无法理解其概念。 whati 是预装扩展的配置文件?你能指导一下吗?使用 selenium 时,隐身模式似乎不允许添加/启用扩展?
  • 我正在为您的问题寻找解决方案。将很快发布答案。还将确保在评论中解决您的问题。
  • 谢谢。在这里我的观察,没有隐身模式,默认情况下它将具有所有扩展名。当我以隐身方式手动打开 chrome(不是通过 python/selenium)时,我仍然看到所有扩展都到位。但是当我们将 webdriver 与 incogito 一起使用时,它不会显示任何扩展名,即使通过添加扩展名方法添加也不起作用..不确定这是否是 selenium .hmm 的限制

标签: python selenium


【解决方案1】:

您加载所需的 cookie/扩展作为您的 chrome 选项的一部分,其他选项是使用 chrome 配置文件。在this post查看我的答案

要了解更多关于配置文件及其工作方式的信息,请参阅here

这是在隐身模式下打开扩展程序的逻辑。

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的更多信息,请参阅我在this post中的回答。

【讨论】:

  • 检查一下,如果您有任何问题,请告诉我。
  • 感谢您的解释,将尝试上述方法,但我什至尝试使用 driver.get("chrome://extensions/?id=extion_name_goes_here") 方法和 ID 也...问题这是一旦您通过 webdriver 以隐身方式启动 chrome,然后我看不到那里的扩展名。我试过 get(chrome://extension) 它什么也没显示
  • 更新:在 chrome 上创建了新的配置文件,尝试添加扩展,但它仍然不会添加扩展。我在列表中看不到此扩展程序..
  • 您是否尝试手动添加扩展程序?如果不是add it manually to the new profile。然后删除脚本中的添加扩展。
  • 您好先生,我已经使用(根据您的帖子) options.add_argument("user-data-dir=d:\\abprofile") 所以它在该位置创建了一个配置文件,我该如何启动chrome 从该配置文件手动添加扩展?
猜你喜欢
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 2016-06-21
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 2015-02-16
相关资源
最近更新 更多