我正在尝试使用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')
该扩展程序已正确加载到浏览器中,但未启用。
要启用扩展,您必须单击DOM外部的扩展图标。
有什么方法可以执行这种动作。
答案 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)
谢谢