python - 使用启用的扩展启动 selenium chromedriver

标签 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

有什么办法可以执行这种操作。

最佳答案

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

首先找到屏幕上扩展按钮的坐标。您可以使用类似 this 的工具.我自己通过 this 与按钮正下方的 DOM 坐标进行比较,大致了解了该位置。 Chrome 扩展。

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

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 脚本。 .

关于python - 使用启用的扩展启动 selenium chromedriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51399594/

相关文章:

java - 如何使用 Jenkins/Maven 运行我的 selenium 测试?

python - 网络驱动程序异常 : unknown error: cannot find Chrome binary error with Selenium in Python for older versions of Google Chrome

python - 在 python 中导入 Zookeeper libzookeeper_mt.so.2 时出错

python - 合乎逻辑或在 Pandas 面具 list 上

eclipse - Selenium junit 测试 - 如何按顺序在测试中运行测试?

Java Selenium 陈旧元素

c# - 更改每个文件的下载位置和名称

selenium-chromedriver - puppeteer 操纵者在点击事件后识别元素内容

python - utc字符串到unix时间转换python

python - 求最小差平方和的算法