【问题标题】:(Karate) How to intercept the XHR request response code?(空手道)如何截取XHR请求响应码?
【发布时间】:2021-12-13 00:38:51
【问题描述】:

我正在第 3 方网站上测试登录功能。我有这个网址 example.com/login 。当我将其复制并粘贴到浏览器(chrome)中时,页面有时会加载,但有时不会(空白的空白页)。 问题是我必须在此页面上运行脚本才能单击其中一个元素(所有元素都嵌入在#shadow-root 中)。如果页面加载,没问题,脚本评估成功。但是页面有时不会加载,它会返回 404 响应 XHR 请求,因此,我的 * eval(scrip("script") 步骤返回“js eval failed...”。

所以我找到了刷新页面的解决方案,为此,我正在考虑捕获 xhr 请求响应。如果状态码为 404,则刷新页面。如果没有,请继续执行以下步骤。

现在,我认为这可能可行,但我不知道如何实现空手道的拦截 HTTP 请求。首先,这是可行的吗?

我查看了此处的文档,但无法理解示例。 https://github.com/karatelabs/karate/tree/master/karate-netty

同时,如果有另一种有条件地刷新页面的方法,我将非常高兴听到它。提前感谢任何人。

【问题讨论】:

    标签: karate


    【解决方案1】:

    首先,使用 JavaScript 你应该能够处理影子根:https://stackoverflow.com/a/60618233/143475

    上面的答案链接到在当前页面上下文中执行 JS 的高级示例。我建议您对此进行一些研究,尝试向熟悉 JS、DOM 和 HTML 的人寻求帮助-您应该找到一种方法来了解 XHR 是否已成功制作-例如基于页面上的某些元素是否已更改等。

    最后这里是你如何进行拦截:https://stackoverflow.com/a/61372471/143475

    【讨论】:

    • 谢谢彼得,事实上,我已经想出了在页面成功加载后在 dom 中运行的查询,但问题是页面没有加载时。我正在寻找一种将“刷新()”方法链接到条件的方法,例如xhr失败或其他。然后我可以在这里添加另一个问题吗? script() 方法是否返回 json 响应,因为 karate.match() 返回 { pass:true, message: '#ignore' } ?这也可以作为这里的一个条件。再次感谢您的及时答复。无论哪种方式,我都会调查 XHR 响应。
    • @karateTester 阅读文档,如果你仍然不能 - 问一个新问题:github.com/karatelabs/karate/tree/master/karate-core#waituntil
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 2019-11-03
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    相关资源
    最近更新 更多