【发布时间】:2017-08-21 04:10:14
【问题描述】:
我知道 Selenium 显然不支持导航上下文菜单。但我也在其他几个线程中看到,使用动作链可以解决这个问题。使用context_click() 后跟箭头键命令浏览菜单。
我看到的所有示例都使用了 Java,当我翻译成 Python 时,只有 context_click() 命令会注册。奇怪的是,我也不会出错。其他消息来源说 Selenium 生成的上下文菜单只是系统级别的,因此 Selenium 无法触摸它们,只能创建。
所以我的问题是,有没有人能够通过 Selenium 从上下文菜单中成功导航和选择选项? Python 示例是首选,但我会接受任何我能得到的建议或答案。
编辑:
代码:
driver.get('https://www.google.com/')
actionChains = ActionChains(driver)
actionChains.context_click().send_keys(Keys.ARROW_UP).send_keys(Keys.ENTER).perform()
上下文:
这只是一个测试脚本,我一直在运行以测试这种情况。在我的个人项目中,我需要导航上下文菜单以访问 chrome 扩展。由于 selenium 只能在网页内进行交互,我不能让它点击浏览器显示的 Chrome 扩展的按钮。所以这是我一直在尝试的解决方法。
研究:
https://testingrepository.com/how-to-right-click-using-selenium-webdriver/
- 这个来源告诉 seleniums 上下文菜单只是系统级别的。在 Java 示例中,它们还使用.build() 命令。据我所知,此命令不适用于 Python。
Select an Option from the Right-Click Menu in Selenium Webdriver - Java
- 线程建议箭头键命令应该工作。但是,所有示例都使用 Java 和 .build() 命令
https://github.com/SeleniumHQ/selenium/blob/master/py/selenium/webdriver/common/action_chains.py
- 表明 ActionChains() 是 Python 版本的 .build() 命令。对某些人来说可能是常识。我以前不知道。
How to perform right click using Selenium ChromeDriver? - 与我的问题非常相似。虽然一位用户建议无法与菜单进行交互,但另一位用户建议 actionChains 变通方法可以工作。
【问题讨论】:
-
你能向我们展示你的工作/研究吗?
-
@DebanjanB 已编辑。谢谢
-
正如这里所解释的 - elementalselenium.com/tips/63-right-clickFurther - 右键菜单通常是 selenium 无法触及的系统级菜单。更多讨论:github.com/GoogleChrome/puppeteer/issues/1575
-
你能找到一个只用硒的解决方案吗?我陷入了类似的境地。
-
@Ontropy 我上一次做这个是几年前的事了。但是据我记得,其他评论者/答案是正确的。 Selenium 仅与网页交互,仅此而已。它甚至不能与浏览器的 UI(如后退按钮)或操作系统级别的 UI(如上下文菜单)交互。出于这个原因,您应该查看其他工具来完成导航上下文菜单。像其他答案中提到的那样,存在解决方法。但是,这些取决于操作系统。