【发布时间】:2020-10-17 00:30:39
【问题描述】:
所以这类似于Click() method will not always work,但有几个重要的区别:
- 不是时间问题,因为我反复尝试点击它直到成功
- 没有抛出异常,只是没有任何反应
- 使用 JS 点击相同的元素可以工作 -
executor.executeScript("arguments[0].click();", element); - 改为使用 button.SendKeys(Keys.Return) 即可。
-
Displayed: true和Enabled: true
只有 button.Click() 不起作用。我已经在断点处停止了应用程序,现在正在通过即时窗口对其进行测试。我可以看到 Click() 没有任何效果并且不会引发异常,但是 javascript click() 和 SendKeys() 可以工作。
一些附加信息:
- 我在 IE11 上使用 InternetExplorerDriver
- 我正在通过远程桌面在 Windows Server 2012 上运行测试
- 它只是间歇性地发生。我记得每次发生测试时都会在运行测试时切换 Alt+Tab,但我不知道这是否是原因。
知道发生了什么吗?
编辑:我注意到第一次点击按下按钮(可见)但它没有得到点击。但是,第二次单击成功。之前的 Click() 没有成功,不管我执行了多少次。
编辑 2:好的,现在我已经确定了 - 如果我单击浏览器窗口,然后单击 Visual Studio,那么第一个 Click() 不起作用。即使 VS 仍然专注,后续的点击都可以工作。从VS切换到记事本再切换到VS不会触发,只会切换到IE再切换回VS。
好像不是IE没有焦点的问题,是有焦点然后失去焦点,那么下一次Click()就会失败。
【问题讨论】:
-
从您的描述看来,您已经发现了问题所在。在我看来,我认为这可能也与 IE 与其他浏览器相比相对较慢有关,因此,您可以尝试使用 WebDriverWait methods 等待查找元素。所以,在 IE 浏览器中点击一个按钮元素,最好保持焦点在 IE 窗口上,或者使用 JavaScript 或 SendKeys 方法点击它。
-
是的,我切换到 javascript 进行点击,现在没有问题了。
标签: c# selenium internet-explorer-11 internet-explorer-driver