使用启用的扩展名启动Selenium chromedriver

时间:2018-07-18 10:24:01

标签: python selenium selenium-chromedriver

我正在尝试使用this插件运行chromedriver。我将插件下载为.crx,并使用以下扩展名初始化了浏览器:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_extension('/path/to/extension.crx')
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='/path/to/chromedriver')

该扩展程序已正确加载到浏览器中,但未启用。

not enabled extension screenshot

要启用扩展,您必须单击DOM外部的扩展图标。

enabled extension

有什么方法可以执行这种动作。

3 个答案:

答案 0 :(得分:1)

这不能通过硒完成。一种快速的方法是使用win32 api模拟点击屏幕上扩展按钮的坐标。

首先找到屏幕上扩展按钮的坐标。您可以使用this之类的工具。我自己通过this chrome扩展名与按钮正下方的DOM坐标进行比较,从而发现了该位置的大致概念。

然后,使用以下代码模拟对该位置的点击:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import win32api, win32con

chrome_options = Options()
chrome_options.add_extension('//path to crx')
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='path to chromedriver')
driver.maximize_window()
click(1317,51) # the coordinates of the button on my 1366 x 768 screen after maximizing. 

def click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)

此外,您可以签出Sikuli。它使用图像识别来识别屏幕上任何所需元素并对其执行操作。您首先必须获取按钮的屏幕截图,然后在sikuli脚本中对其执行单击功能。之后,您可以按照here的建议从python触发sikuli脚本。

答案 1 :(得分:1)

  

要启用扩展,您必须单击DOM外部的扩展图标。

这是问题所在。 Selenium和Webdriver仅在DOM上起作用。

典型的解决方案是use Sikuli with Selenium。它是一个强大而强大的工具,可以自动化和测试用户界面屏幕截图。 Sikuli Script的核心是用Java编写的,这意味着您可以将Sikuli Script用作程序中的标准JAVA库。

如果您使用Windows,则较新的解决方案是使用SeeShell来实现相同的目的。 SeeShell与Sikuli相似,但是针对Windows自动化进行了优化,并且还提供了relative matching,我发现它对于可靠地查找小图像(例如扩展图标)很有用。

答案 2 :(得分:0)

在Ubuntu(Linux)上对我没有任何帮助。所以我已经完成了


安装必需的软件包:

-> sudo apt install libx11-dev
Note: install above "libx" package according to your distro

-> pip install selenium PyUserInput

注意:安装PyUserInput之后,您应该在python路径中包含pymouse和pykeyboard模块。

import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from pymouse import PyMouse

m = PyMouse()
executable_path = "/home/username/python/chromedriver"
# Note: replace your chromedriver path with above

os.environ["webdriver.chrome.driver"] = executable_path
chrome_options = Options()
chrome_options.add_extension('path_of_extension.crx')

driver = webdriver.Chrome(executable_path=executable_path, chrome_options=chrome_options)
driver.maximize_window()

m.click(1317,51)

谢谢