gpt4 book ai didi

selenium - 如何等待 Ajax 调用来填充 Selenium 中的下拉列表

转载 作者:行者123 更新时间:2023-12-02 14:42:06 25 4
gpt4 key购买 nike

好的,我有两个下拉列表。 列表 B 根据使用 Ajax 技术在列表 A 上所做的选择进行填充。

现在的问题是,一旦我选择了列表 A 中的选项,我就无法看到填充的列表 B 了,因为 Ajax 需要花费大量时间来填充加载。我想知道如何在这种情况下使用等待条件来给 Ajax 足够的时间来加载。我是初学者,所以如果我的问题听起来很愚蠢,我很抱歉。但我真的被困在这个问题上很久了。

我无法使用:

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

因为 id、xpath 等始终保持不变,即使列表未填充也是如此。

最佳答案

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

因此请尝试以下操作(未经测试的 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));

或者等待选项数大于 1

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;
}
});

关于selenium - 如何等待 Ajax 调用来填充 Selenium 中的下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17501573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com