selenium - 单击带有硒的 Chrome 扩展程序中的元素
问题描述
我一直在使用 Selenium (Java) 与 Google Chrome 扩展程序交互在互联网上搜索,但未能找到答案。
第一个问题有没有办法启动 chrome 扩展,因为 Selenium 只与 WebView 交互,而不是浏览器中的 chrome 扩展按钮?
我尝试了这种方法“chrome-extension://id/index.html”,但扩展没有按预期启动。我喜欢发现是否有另一种方法可以通过 selenium 启动 chrome 扩展
第二个问题我正在尝试使用 Selenium webdriver 单击 chrome 扩展中的元素。我该怎么做 ?我尝试了 driver.CurrentWindowHandle ,但它没有检测到 chrome 扩展。
谢谢
解决方案
下面是 pyautogui 的解决方案(类似于java 中的autoit - 因此您也可以为java扩展相同的解决方案)。
前提:
将扩展图像保存在项目文件夹中(在我的示例中,我将其保存在“autogui_ref_snaps”文件夹下,名称为“capture_full_screenshot.png”
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")
如果您正在加载一个扩展并且它在隐身模式下不可用,那么请按照我在此处的回答来启用它。
推荐阅读
- java - Android 10 上的定位服务
- java - 为 Java 构建命名参数支持
- progressive-web-apps - PWA 启动画面图标大小太大
- javascript - 由于重叠,无法在引导下拉列表中选择项目
- node.js - Mockingoose _id:无法读取未定义错误的属性“位置”
- react-native - 反应原生的onmouseenter事件
- pm2 - 使用 PM2 调试 Node.js 时,是否有 CLI 选项来避免使用集群模块为每个线程打开命令提示符?
- python - 在数据框中,如何将带有列表的列(所有行的长度相同)分解为同一行的不同列
- c++ - 常量成员初始化
- azure - 使用 Azure 自动化帐户,跨存储将文件从一个文件共享复制到另一个文件共享