Selenium C#IJavaScriptExecutor抛出错误,但JS很好

时间:2018-05-04 08:54:12

标签: javascript c# selenium click

我正在使用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控制台是空的,所以我认为它甚至没有尝试。此外,切换浏览器不是一种选择。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

也许脚本在页面完全加载之前正在执行,尝试把它放在像这样的页面就绪事件中

window.onload = function() {
    et iFrame = document.getElementById("dkwframe").contentWindow.document;
    let element = iFrame.querySelector("[id*='_ImgLnkNewPage_LinkButtonControl']");
    element.click();
}

或者您可以检查是否满载:

if (document.readyState === 'complete') {
}