单击带有硒的Chrome扩展程序中的元素

时间:2018-11-06 12:40:30

标签: selenium google-chrome-extension

我一直在使用与Google Chrome扩展程序交互的Selenium(Java)在互联网上进行搜索,但是找不到答案。

第一个问题 由于Selenium仅与WebView交互,而没有在浏览器中的chrome扩展按钮上交互,因此有没有办法启动chrome扩展?

我尝试这种方法 “ chrome-extension://id/index.html”,但是扩展未按预期启动。我喜欢发现是否还有另一种通过硒启动chrome扩展的方法

第二个问题 我正在尝试使用Selenium webdriver单击chrome扩展中的元素。我该怎么做 ?我尝试了driver.CurrentWindowHandle,但是它没有检测到镶边。

谢谢

2 个答案:

答案 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', '*')")