我想知道是否有一种方法可以在不使用win32api的情况下使用Selenium单击扩展按钮。这是图片,黑色圆圈中是我要单击的扩展图标。
该图标位于工具栏中,所以我不知道是否可以使用Selenium查找它。
答案 0 :(得分:0)
否,硒是不可能的。实现目标的唯一方法是使用任何直接在您使用的OS中直接运行的自动化工具。
答案 1 :(得分:0)
您可以通过将此链接与硒结合使用来解决此问题。但是,行为可能略有不同。
chrome-extension://<the extension identity>/html/login.html
访问此链接以获取扩展名:How to get extension identity
答案 2 :(得分:0)
下面是使用pyautogui的Python解决方案。
前提条件:
将扩展程序图像保存在项目文件夹中(我在示例中以“ capture_full_screenshot.png”名称将其保存在“ autogui_ref_snaps”文件夹下
需要导入
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中的回答将其启用。
答案 3 :(得分:0)
使用此方法,您可以成功打开扩展名(执行单击该图标)
driver.execute_script("window.postMessage('clicked_browser_action', '*')")
答案 4 :(得分:0)
首先安装pyautogui
,然后找到扩展程序图标的图像,并将其保存在计算机上的./extn_icon.png
等位置。然后使用以下代码单击扩展名:
import pyautogui
img_location = pyautogui.locateOnScreen(image_path, confidence=0.5)
image_location_point = pyautogui.center(img_location)
x, y = image_location_point
pyautogui.click(x, y)
答案 5 :(得分:-1)
我正面临着同样的问题,但是我能够用sikuli做到这一点。它非常容易使用,您可以在maven存储库中找到该罐子