【问题标题】:how to track ajax requests and responses through selenium webdriver?如何通过 selenium webdriver 跟踪 ajax 请求和响应?
【发布时间】:2021-09-13 21:26:37
【问题描述】:
我有一个用例,我将通过 selenium web-driver 在给定站点上填写职业表格,然后当我点击提交按钮时,我想知道表格是否提交成功或不是。
在这种情况下,基本上有两种可能,
a) 网站通过职业页面上的 java 脚本填充错误
b) 前端以ajax请求的形式调用服务器,并得到响应。
有什么方法可以让我识别浏览器是否在点击时进行 ajax 调用,如果是在进行 ajax 调用,该调用的响应状态码?
【问题讨论】:
标签:
ajax
selenium
selenium-webdriver
webdriver
【解决方案1】:
在我的项目中,我正在使用这样的东西:
object response = ((IJavaScriptExecutor) Driver.WebDriver).ExecuteAsyncScript(
"var url = arguments[0];" +
"var callback = arguments[arguments.length - 1];" +
"var xhr = new XMLHttpRequest();" +
"xhr.open('GET', url, true);" +
"xhr.onreadystatechange = function() {" +
" if (xhr.readyState == 4) {" +
" callback(xhr.getAllResponseHeaders());" +
" }" +
"};" +
"xhr.send();", url);
您可以更改 xhr.getAllResponseHeaders() 以获取所有响应,而不仅仅是标题。
之后你可以序列化响应,甚至解析它并尝试查找文本