提问人:madx 提问时间:10/30/2023 最后编辑:madx 更新时间:10/30/2023 访问量:44
使用 python 在 Selenium 中使用“浏览器操作”激活 Chrome 扩展程序
Activate a Chrome Extension with a "Browser Action" in Selenium with python
问:
出于测试目的,我需要在 Selenium 测试中使用 Chrome 扩展程序。
在图片中,您只看到扩展按钮(拼图),在该按钮(单击)下是我要激活的扩展。
由于扩展的代码可用,因此我添加了一个以使用 selenium ActionChains 快捷方式轻松激活扩展。
这是我编辑的文件:_execute_browser_action
manifest.json
manifest.json
{
"manifest_version": 2,
"name": "The Extension Name",
"...", "...",
"...", "...",
"...", "...",
"commands": {
"_execute_browser_action": {
"suggested_key": {
"default": "Ctrl+I",
"mac": "MacCtrl+I"
}
}
}
}
问题是我尝试运行此代码,但扩展未触发(即使我手动检查了快捷方式并且它运行良好):
from selenium import webdriver
from selenium.webdriver import ActionChains, Keys
options = webdriver.ChromeOptions()
# options.add_extension('./my-extension.crx')
options.add_argument("--load-extension=./my-extension-chromium")
options.add_argument("--start-maximized")
driver = webdriver.Chrome(options=options)
url = "http://localhost:9000/"
driver.get(url)
ActionChains(driver)\
.key_down(Keys.CONTROL)\
.send_keys("i")\
.key_up(Keys.CONTROL)\
.perform()
我测试的另一个解决方案,总是没有成功:pyautogui
import pyscreeze
import PIL
from selenium import webdriver
import pyautogui
__PIL_TUPLE_VERSION = tuple(int(x) for x in PIL.__version__.split("."))
pyscreeze.PIL__version__ = __PIL_TUPLE_VERSION
options = webdriver.ChromeOptions()
# options.add_extension('./my-extension.crx')
options.add_argument("--load-extension=./my-extension-chromium")
options.add_argument("--start-maximized")
driver = webdriver.Chrome(options=options)
url = "http://localhost:9000/"
driver.get(url)
# Click on extension icon
v = pyautogui.locateOnScreen("./puzzle_piece_icon.png")
print(v)
pyautogui.click(x=v.left, y=v.top, clicks=1, interval=0.0, button="left")
# that click is not working. after that i should click on the extension icon
# ext_icon = pyautogui.locateOnScreen("./extension_icon.png")
# pyautogui.click(x=ext_icon.left, y=ext_icon.top, clicks=1, interval=0.0, button="left")
driver.quit()
如果可能的话,我宁愿让第一个解决方案工作(使用 ActionChains 触发器)......因为我不必集成库。
但欢迎任何其他可行的解决方案。pyautogui
答: 暂无答案
评论