Selenium 启动 chrome 并启用扩展

问题描述 投票:0回答:3

我们正在测试扩展,当我使用 selenium 运行代码时,它会使用扩展打开浏览器,现在我需要通过向右滑动来启用它。

我以为我可以用检查(xpath、elemts、id等)来做到这一点,但正如我所看到的,当我右键单击它时,我没有从扩展按钮中获得检查,之后也从扩展中获得检查。

但是在扩展程序内部我有一个幻灯片可以向右移动来启动它,在幻灯片上我可以导出检查信息,但是我需要使用什么来将其滑动到右侧?

基本上这就是我的代码的开始方式:

op = Options()
op.add_extension('../extension/extension_21_9_0_0.crx')
driver = webdriver.Chrome(ChromeDriverManager().install(), options=op)
move = ActionChains(driver)
#driver.maximize_window()
time.sleep(2)

driver.get(url)
python selenium automation slide
3个回答
0
投票

Selenium 无法定位扩展菜单,您可以使用 pyautogui 模拟单击以使其工作。


0
投票

有很多这样的事情“视情况而定”。

Selenium 将很难与扩展弹出窗口交互,因为它本质上是在不同的 html 页面中打开扩展提示。

Chrome 扩展 (v2) 采用

background pages
的概念。 Chrome 扩展程序 (v3) 可与
service workers
配合使用。您应该弄清楚您正在使用哪种解决方案,以便确定最佳解决方案。

此时,在不知道您的分机的情况下,我会建议几个选项:

1/ 当你点击滑块时,它会触发一些JS。查看代码,找出调用位置,然后触发相同的 JS。

如果需要,在开发工具源选项卡上,您可以在执行跟踪调用链的操作之前暂停执行:

2/ 在普通页面打开您的扩展页面。

手动检查您的扩展页面并在开发工具控制台上输入

document.location
这将为您提供 chrome 正在运行的本地扩展页面 - 例如:

...
href: "chrome-extension://ojhcleddagaoaplflbafhpekcciikdop/popup.html"
origin: "chrome-extension://ojhcleddagaoaplflbafhpekcciikdop"
pathname: "/popup.html"
...

将该 href 放入您的 selenium 导航中,您应该有一个可以与之交互的页面。

更新 Chrome 扩展程序的版本不会更新该标识符。我已经完成了 chrome 扩展的开发,但从未见过我的更改 - 不知道更新它实际上需要什么。


0
投票

事实上,这是可能的,只需使用

driver.get("chrome://extensions/?id=pkoacgokdfckfpndoffpifphamojphii")
,其中
pkoacgokdfckfpndoffpifphamojphii
应替换为您的分机的 id。然后您可以通过单击该页面中的相应按钮来启用/禁用扩展。

如果您只是想更改扩展程序的设置而不是完全禁用它,您可以参考这个答案

© www.soinside.com 2019 - 2024. All rights reserved.