如何在Selenium中填充下拉列表时等待Ajax调用
发布时间:2020-12-16 01:37:29 所属栏目:百科 来源:网络整理
导读:好的,我有两个下拉列表.列表B基于使用Ajax技术在列表A上进行的选择来填充. 现在的问题是,一旦我选择了表单A的选项,我就无法看到列表B填充,因为Ajax需要花费大量的时间来加载.我想知道如何在这种情况下使用Wait条件为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; } }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |