【发布时间】:2018-10-14 16:59:25
【问题描述】:
我正在使用 Selenium C# 在 Internet Explorer 11 中测试一个非常复杂的 Web UI。您可能知道,Selenium 的 Click() 往往无法正常工作,在这种情况下插入一个 JS click 方法是必要的。 我正在使用以下动态生成的脚本运行
(IJavaScriptExecutor) 驱动程序).ExecuteScript(脚本)。 这是脚本:
let iFrame = document.getElementById("dkwframe").contentWindow.document;
let element = iFrame.querySelector("[id*='_ImgLnkNewPage_LinkButtonControl']");
element.click();
当我直接在 IE 控制台中执行脚本时,它可以正常工作,但是当使用它执行 Selenium 时,我得到了这个:
System.InvalidOperationException : Error executing JavaScript (UnexpectedJavaScriptError)
IE 控制台是空的,所以我不认为它在尝试。此外,切换浏览器不是一种选择。
感谢您的帮助
【问题讨论】:
-
请注意,通过调用
.click(),您不再模拟用户点击,也不再编写端到端测试。来自 Javascript 的click仅执行底层侦听器或附加重定向,这并不能验证真实用户是否能够单击目标元素。关于您的错误,IE11 不支持let,应替换为var。 -
您好,感谢您的回复。我知道调用 .click() 并不理想,但这是我唯一的解决方案。至于我点击的内容,我确保它是一个可点击的元素。我会尽快用 var 替换 let!
-
不,即使用 var 替换 let 也不会改变任何事情
标签: javascript c# selenium click