selenium - 如何在使用 Selenium 的注入代码中故意抛出错误?
问题描述
我有一个带有自定义window.addEventListener("error", ...)
逻辑的页面。我想测试它是否有效,唯一真正的方法是抛出错误。
我试过这个:
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);
这应该可以模拟事件
推荐阅读
- php - TCPDF 链接不适用于 Mac PDF 预览
- functional-programming - Ocaml - 将代码运行时编译为字符串
- docker - 当 K8S writer env 到 docker 时?有没有办法从 dockerfile 获取真正的 HOSTNAME 或 POST_NAME?
- c# - 选项卡控件保存状态
- haskell - 带有列表的 Haskeline 单词完成
- apache-spark - 如何查看 Spark 在访问 MariaDB 时生成的 SQL 表达式?
- reactjs - 带有 create-react-app 和 Youtube 的 SameSite 属性警告
- java - 应该共享 LambdaClient 对象吗?
- python - 我如何获取每个抓取的 URL 文本值我只获取最后一个 URL 值
- ios - SCNView 不刷新,但在点击屏幕后