Abh*_*rma 1 ajax selenium xmlhttprequest
我有一个选择框,它调用基于 XMLHttpRequest 的 AJAX 调用来填充另一个选择框。我希望 Selenium 等到选择框被填充。我必须等待 XMLHttpRequest 的 readState 变量的值为 4,这意味着数据已填充。
在Java中:你可以像这样等待readyState变化:
int tryCount = 0;
boolean desiredResponseReceived = false;
while (desiredResponseReceived == false && tryCount < 20) {
String readyState = (String) js.executeScript("return xhr.readyState;");
if (readyState.equals("4")) {
desiredResponseReceived = true;
}
else {
Thread.sleep(250);
tryCount++;
}
}
if (desiredResponseReceived == false) {
driver.quit();
}
Run Code Online (Sandbox Code Playgroud)
寻找就绪状态的一个问题是,页面可能发出多个 XMLHttpRequest。而且你不会知道哪一个是哪一个。即使您在单击相关按钮(例如)后立即检查它,也可能会触发多个请求。并且不知道哪个会先返回。
您的情况的另一个选择可能是等待框中的内容options发生select变化。所以在上面的代码中,你可以替换
String readyState = (String) js.executeScript("return xhr.readyState;");
if (readyState.equals("4")) {
Run Code Online (Sandbox Code Playgroud)
和
List<WebElement> options = driver.findElements(By.tagName("option"));
if (options.size() > 1) {
Run Code Online (Sandbox Code Playgroud)
或者,如果您不知道options期望的最小数量,您可以测试中是否option包含特定的。或类似的东西。attributeList
| 归档时间: |
|
| 查看次数: |
1597 次 |
| 最近记录: |