如何在Selenium中填充下拉列表时等待Ajax调用

前端之家收集整理的这篇文章主要介绍了如何在Selenium中填充下拉列表时等待Ajax调用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,我有两个下拉列表.列表B基于使用Ajax技术在列表A上进行的选择来填充.

现在的问题是,一旦我选择了表单A的选项,我就无法看到列表B填充,因为Ajax需要花费大量的时间来加载.我想知道如何在这种情况下使用Wait条件为Ajax提供足够的时间来加载.我是初学者,所以如果我的问题听起来很愚蠢,我很抱歉.但我真的很坚持这一点.

我不能用:

WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id/xpath)));

因为id,xpath等总是保持不变,即使没有填充列表.

我建议两种方法,一种是等待选项项x,另一种方法是等待选项计数大于一.

所以尝试以下(未经测试的Java代码,因此您可能需要调试一下):

等待您想要的一个选项(通过其值或文本):

By byValue = By.cssSelector("#alertSubCatSelectBox > option[value='18222216517']");
//By byText = By.xpath("//select[@id='alertSubCatSelectBox']/option[text()='Item x']");
new WebDriverWait(driver,10).until(ExpectedConditions.presenceOfElementLocated(byValue));

或者等待大于一的选项数

WebDriverWait wait = new WebDriverWait(driver,10);
wait.until(new ExpectedCondition<Boolean>() {
    public Boolean hasMoreThanOneOptions(WebDriver driver) {
        return driver.findElements(By.cssSelector("#alertSubCatSelectBox option")).size() > 1;
  }
});

猜你在找的Ajax相关文章