好的,我有两个下拉列表.列表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; } });