Selenium WebDriver:是否可以测试将代码注入当前页面的 WebExtension?

Selenium WebDriver: is it possible to test WebExtension that inject code to the current page?

我找到了articles about opening browser extension as a page - but my extension inject JS to the current page - and extension can not inject code to chrome* pages. My only choice is SikuliX?我还可以使用 SikuliX 测试按钮的 badge。我认为使用 SikuliX 我可以模拟真实的用户行为 - 这种关于 UI 交互的测试对我来说看起来更可靠。也很高兴测试 CSS 正确性。

我尝试为我的扩展程序设置一个热键:

但是
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 'I') (Python) 或 driver.findElement(By.tagName("body")).sendKeys(Keys.CONTROL + "I") (Java) 什么都不做,但我可以按 Ctrl+I 并且我看到弹出窗口-UI 打开了。

更新:我尝试使用 pyautogui 进行鼠标点击 - 但即使打开扩展弹出窗口 UI driver.window_handles 也不包含它 :(

您可以将 webdriver 配置为在启动时将您的扩展加载到浏览器中。加载扩展后,它可以注入所需的代码,我假设这些代码对 html 进行了一些更改,例如添加/删除一些 html 元素或应用一些样式,然后可以使用 Selenium 对其进行测试。您还可以使用 selenium 执行 javascript。

Sikuli 框架基于图像识别,然后使用鼠标和键盘模拟用户在其上的交互。在这些情况下,您的测试用例可能会中断:

  • 分辨率的变化甚至可能导致布局变化
  • 更改应用程序的主题导致 ui-elements
  • 的颜色发生变化
  • 需要对焦等

目前,我使用 Selenium 网络驱动程序 pyautogui (for interactions with extension) and opencv2 (for computer vision), see more at https://www.pyimagesearch.com/2014/09/15/python-compare-two-images/

通过比较预期和实际 屏幕截图 来测试我的扩展