当前位置 : 主页 > 编程语言 > python >

python – 如何接受在Selenium中安装扩展时显示的弹出窗口?

来源:互联网 收集:自由互联 发布时间:2021-06-25
我正在使用selenium进行一些浏览器自动化.我需要在浏览器中为我的工作安装扩展程序.我这样做如下: import seleniumfrom selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsexecutab
我正在使用selenium进行一些浏览器自动化.我需要在浏览器中为我的工作安装扩展程序.我这样做如下:

import selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
executable_path = "/usr/bin/chromedriver"
options = Options()
options.add_extension('/home/TheRookie/Downloads/extensionSamples/abhcfceiempjmchhhdhbnkbimnfpckgl.crx')
browser = webdriver.Chrome(executable_path=executable_path, chrome_options=options)

浏览器正常启动但我提示弹出窗口确认我要添加扩展名如下:

在我弹出这个弹出窗口之后,Python会很快返回,但会出现以下异常:

selenium.common.exceptions.WebDriverException: Message: u’unknown
error: failed to wait for extension background page to load:
chrome-extension://abhcfceiempjmchhhdhbnkbimnfpckgl/toolbar.html\nfrom
unknown error: page could not be found:
chrome-extension://abhcfceiempjmchhhdhbnkbimnfpckgl/toolbar.html\n
(Driver info: chromedriver=2.12.301324
(de8ab311bc9374d0ade71f7c167bad61848c7c48),platform=Linux
3.13.0-39-generic x86_64)’

我尝试使用以下代码将弹出窗口作为常规JavaScript警报处理:

alert = browser.switch_to_alert()
alert.accept()

但是,这没有用.谁能告诉我如何在没有弹出窗口或接受弹出窗口的情况下安装此扩展程序?任何帮助将不胜感激.谢谢!

通常,由于安装对话框,您无法仅使用Selenium测试Chrome扩展的内联安装.在野外有一些例子展示了如何在Selenium之外使用外部工具来解决这个问题,但这些不是非常便携(即特定于平台)并且依赖于Chrome的UI状态,这不能保证一致.

但这并不意味着您无法测试内联安装.如果将chrome.webstore.install替换为行为类似于chrome.webstore.install API(但没有对话框)的替换,则最终结果对于所有意图和目的都是相同的.

“像chrome.webstore.install这样的行为”包含两件事:

>错误报告和回调调用中的相同行为.
>安装了扩展程序.

我刚刚在Github上设置了这样一个例子,其中包括帮助扩展/ app的源代码和一些使用Selenium(Python,Java)的例子.我建议阅读README和源代码,以便更好地了解发生的情况:https://github.com/Rob–W/testing-chrome.webstore.install.

该示例不要求Chrome网上应用店中提供经过测试的扩展程序.它甚至没有连接到Chrome网上应用店.特别是,它不会检查运行测试的站点是否列为已验证的网站,which is required for inline installation to work.

网友评论