【问题标题】:How to load extension with hotkey to webdriver?如何使用热键将扩展加载到 webdriver?
【发布时间】:2016-09-17 03:52:58
【问题描述】:


我想通过 Webdriver 在 Chrome 中通过其热键启动一个扩展(解压缩)。我无法在正在运行的 ChromeDriver 实例中使用热键/快捷键。谁能告诉我,怎么做?
这是到目前为止的代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("load-extension=C:\\Users\\...\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Extensions\\blablabla\\4.3.25_0")
browser = webdriver.Chrome(chrome_options=chrome_options)

这会使用扩展程序启动新的 Chrome,但不包括原始热键。我的想法是添加一些选项或能力或首选项,但还没有找到类似的东西。
如果我可以创建一个新配置文件、安装扩展程序、设置热键并使用此配置文件启动 Chrome 也可以,但我还需要以编程方式创建这些配置文件的步骤。
感谢您的任何反馈!

【问题讨论】:

  • How to send Keyboard Shortcuts to browser using Selenium and Nodejs - WebDriver cannot be used todo browser specific actions, it can only be used to drive the web-page 所以你必须使用 python 发送热键,应该有很多可谷歌搜索的例子。
  • 您好,谢谢,但问题不在于如何发送热键,例如可以使用 pyautogui.hotkey('ctrl', 'v') 轻松完成。问题是,如何设置添加的扩展,使其包含可以通过 Python 启动它的热键。对此有什么想法吗?
  • 我明白了。尝试Automate a button click on chrome://extensions page using selenium webdriver - 导航到chrome://extensions,找到并单击shortcuts 链接,找到并单击扩展程序的热键输入框,确保窗口处于活动状态并使用pyautogui 发送热键。另请注意,扩展程序的清单中必须有 browserActioncommands 键。
  • @wOxxOm 请不要在 cmets 中写出相当于扩展答案的内容吗?
  • 显然这只是基于盲目谷歌搜索的猜测。用多余的解释来避免“你是什么意思”的后续行动。称其为扩展答案过于夸张。

标签: python-3.x selenium-webdriver google-chrome-extension selenium-chromedriver hotkeys


【解决方案1】:

这解决了这个问题(我消除了任何不是 WebDriver 的命令,例如 pyautogui.hotkey 等):

chrome_options = Options()
chrome_options.add_argument("load-extension=" + ext_folder)
browser = webdriver.Chrome(chrome_options = chrome_options)
browser.get('chrome://extensions-frame/')
browser.find_element(By.XPATH, "//a[@class='extension-commands-config']").click()
browser.find_element(By.XPATH, "//span[@class='command-shortcut-text']").send_keys(Keys.CONTROL + "m")
browser.find_element(By.ID, "extension-commands-dismiss").click()

browser.find_element(By.TAG_NAME, "body").send_keys(Keys.CONTROL + "m")

【讨论】:

  • 我写了下面的代码:driver.Navigate().GoToUrl("chrome://extensions-frame/"); driver.FindElement(By.XPath("//a[@class='extension-commands-config']")).Click(); driver.FindElement(By.XPath("//span[@class='command-shortcut-text']")).SendKeys(Keys.Control + "m"); driver.FindElement(By.Id("extension-commands-dismiss")) .Click();我收到类似 OpenQA.Selenium.NoSuchElementException Message=no such element: Unable to locate element: {"method":"xpath","selector":"//a[@class='extension-commands-config'] 的错误“}。请帮忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2014-10-04
  • 1970-01-01
  • 2011-12-01
  • 2020-10-14
  • 2012-01-07
  • 1970-01-01
相关资源
最近更新 更多