微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在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;
  }
});

原文地址:https://www.jb51.cc/ajax/159978.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐