【问题标题】:start selenium chromedriver with enabled extension启动 selenium chromedriver 并启用扩展
【发布时间】:2019-01-22 03:50:42
【问题描述】:

我正在尝试使用 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 外部的扩展图标。

有没有办法执行这种操作。

【问题讨论】:

  • 您是否尝试过在通用配置文件中配置扩展启用设置并使用 ChromeOptions 加载配置文件?
  • 不,我还没有尝试过,但听起来很聪明。是否可以启动chromedriver并使用特定的google帐户作为chrome帐户?
  • 我不知道。
  • 我尝试了不同的扩展名,默认情况下它为我启用。您可以尝试使用不同的扩展名吗?当您使用AddExtension 方法时,它应该默认启用,除非您在代码中添加了其他开关,例如--disable-extension

标签: python selenium selenium-chromedriver


【解决方案1】:

这不能通过 Selenium 完成。一种快速的方法是使用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 脚本。

【讨论】:

    【解决方案2】:

    在 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)
    

    谢谢

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 1970-01-01
      • 2018-10-15
      • 2021-07-02
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多