如何在使用Selenium的注入代码中故意抛出错误?

如何在使用Selenium的注入代码中故意抛出错误?,selenium,webdriver,onerror,Selenium,Webdriver,Onerror,我有一个带有自定义窗口的页面。addEventListener(“错误”,…)逻辑。我想测试它是否有效,唯一真正的方法是抛出一个错误 我试过这个: await browser.executeScript("throw new Error();"); …但Selenium本身看到了错误,并认为这是一个例外。好的 JavascriptError: Error at Object.throwDecodedError (node_modules/selenium-webdriver/lib/er

我有一个带有自定义
窗口的页面。addEventListener(“错误”,…)
逻辑。我想测试它是否有效,唯一真正的方法是抛出一个错误

我试过这个:

await browser.executeScript("throw new Error();");
…但Selenium本身看到了错误,并认为这是一个例外。好的

JavascriptError: Error

  at Object.throwDecodedError (node_modules/selenium-webdriver/lib/error.js:550:15)
  at parseHttpResponse (node_modules/selenium-webdriver/lib/http.js:542:13)
  at Executor.execute (node_modules/selenium-webdriver/lib/http.js:468:26)
接下来,尝试异步执行此操作:

await browser.executeScript(() => {
    setTimeout(() => { throw new Error(); }, 1);
});
…但是页面本身没有注意到错误(是的,我已经验证了在开发工具中抛出一个会触发预期的处理)

接下来,我尝试使用一个异步脚本来安排一个错误,然后是回调:

await browser.executeAsyncScript((callback) => {
    setTimeout(
        () => {
            setTimeout(callback, 1);

            throw new Error();
        },
        1);
});
…但是页面本身仍然没有注意到错误


我在这里遗漏了什么吗?

您可以使用下面的脚本轻松模拟

var errorElem = document.createElement("script");
errorElem.textContent = 'throw new Error("simulated error");'
document.body.append(errorElem);

这应该能够模拟事件

抛出新错误();这是调用Javascript方法的一部分吗。executeScript正在页面上查找要旁路的Javascript对象。您可以在控制台窗口中检查它是否工作。@IshitaShah这些代码段正在引用Selenium
浏览器
对象的测试文件中运行。在本例中,它们位于由节点运行的
MyTests.test.js
中。目标是模拟抛出错误的页面。