我一直在使用与Google Chrome扩展程序交互的Selenium(Java)在互联网上进行搜索,但是找不到答案。
第一个问题 由于Selenium仅与WebView交互,而没有在浏览器中的chrome扩展按钮上交互,因此有没有办法启动chrome扩展?
我尝试这种方法 “ chrome-extension://id/index.html”,但是扩展未按预期启动。我喜欢发现是否还有另一种通过硒启动chrome扩展的方法
第二个问题 我正在尝试使用Selenium webdriver单击chrome扩展中的元素。我该怎么做 ?我尝试了driver.CurrentWindowHandle,但是它没有检测到镶边。
谢谢
答案 0 :(得分:2)
以下是pyautogui的解决方案(类似于Java中的 autoit -因此您也可以扩展 java 的相同解决方案)。
前提条件:
将扩展程序图像保存在项目文件夹中(我在示例中以“ capture_full_screenshot.png”名称将其保存在“ autogui_ref_snaps”文件夹下
Python:
需要导入
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from Common_Methods.GenericMethods import *
import pyautogui #<== need this to click on extension
脚本:
options = ChromeOptions()
options.add_argument("--load-extension=" + r"C:\Users\supputuri\AppData\Local\Google\Chrome\User Data\Default\Extensions\fdpohaocaechififmbbbbbknoalclacl\5.1_0") #<== loading unpacked extension
driver = webdriver.Chrome(
executable_path=os.path.join(chrome_options=options)
url = "https://google.com/"
driver.get(url)
# get the extension box
extn = pyautogui.locateOnScreen(os.path.join(GenericMethods.get_full_path_to_folder('autogui_ref_snaps') + "/capture_full_screenshot.png"))
# click on extension
pyautogui.click(x=extn[0],y=extn[1],clicks=1,interval=0.0,button="left")
如果您正在加载扩展程序,而该扩展程序在隐身模式下不可用,请按照我在here中的回答将其启用。
答案 1 :(得分:0)
尝试使用此JsExecutor方法单击扩展名:
driver.execute_script("window.postMessage('clicked_browser_action', '*')")