如何使用Selenium单击Chrome扩展程序按钮

时间:2018-07-25 16:54:07

标签: python python-2.7 selenium selenium-chromedriver

我想知道是否有一种方法可以在不使用win32api的情况下使用Selenium单击扩展按钮。这是图片,黑色圆圈中是我要单击的扩展图标。

enter image description here

该图标位于工具栏中,所以我不知道是否可以使用Selenium查找它。

6 个答案:

答案 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存储库中找到该罐子