【发布时间】:2019-11-11 02:50:06
【问题描述】:
我正在尝试进行网络自动化。 我正在定义一个弹出菜单,其中包含一个分别用 xpath 或 css 定义的按钮作为
XPath:-->:
//button[contains(text(), 'Open Door')CSS:-->:
div.device-item.content.view-content > div.detail > div > button.btn.btn-primary.ng-star-inserted
虽然一切都很好,但它会抛出
org.openqa.selenium.ElementClickInterceptedException: element click intercepted:
当我一次调试测试时,它 单击按钮成功运行,没有任何 问题。但是当我运行测试时,它失败了。我希望这不是等待问题,因为我们申请检查等待 按钮的存在并验证它是否存在且可点击。
我相信很多人会建议使用 JavaScriptExecutor 方法,但是我们的框架存在一个问题,即会将任何 Web 元素作为名为 "Element" 的自定义对象返回,这既不是 Web Element 也不是它的子类,而是扩展了 Object 并实现了一个名为 IElement 的接口,所以 我们不能使用 JavaScriptExecutor 方法,因为它需要 Web Element 形式的按钮,我们想点击。
【问题讨论】:
-
你可以把 xpath / css 传递给 JavaScriptExecutor 并在 js 中选择它。
-
@pguardiario 你有什么可以推荐的例子吗?我检查了selenium.dev/selenium/docs/api/java/index.html 的 JavaScriptExecutor 页面,但找不到任何采用 xpath 或 css 的方法。
-
您使用哪种语言的 selenium 库进行脚本开发? (以便我们可以提供示例 JS 执行器)并且您的应用程序中是否有多个带有 Open Door 按钮的选项卡?
-
你是在 Internet Explorer 浏览器上运行这个吗?
-
我在 Chrome 浏览器上运行。我正在使用 Java 绑定。没有其他带有“开门”按钮的选项卡。只有一个选项卡和一个 DDO 门实体,单击它会打开一个菜单,其中包含“开门”和“详细信息”菜单项。
标签: java selenium selenium-webdriver webdriver webdriverwait