我想找到Select
WebElement
:
WebElement select = driver.findElement(By.id("gender"));
因此,如果我想使用ExpectedConditions
等待,然后使用我的元素selectByVisibleText
,selectByValue
...
我应该选择ExpectedConditions
:presenceOfElementLocated
或elementToBeClickable
答案 0 :(得分:1)
elementToBeClickable
应该适合 - 它等待一个元素既可见又启用:
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement select = wait.until(ExpectedConditions.elementToBeClickable(By.id("gender")));
Select genderDropdown = new Select(select);
genderDropdown.selectByVisibleText("male");
答案 1 :(得分:0)
嗨,按照官方文档形式selenium java doc
2.5
和
presenceOfElementLocated(By locator)
An expectation for checking that an element is present on the DOM of a page.
并且他们没有定义/提及哪个更好或没有,两者都很好,您可以自由选择。但在我个人看来,它更适合
elementToBeClickable(By locator)
An expectation for checking an element is visible and enabled such that you can click it.
,因为
elementToBeClickable(By locator)
所以如果你选择 presenceOfElementLocated(通过定位器)那么你可能会遇到上面的错误,因为它只会等到元素在DOM中可用后一旦可用它将允许其他操作作为它清楚地写在官方文件中,你可以清楚地看到上面。
您还可以在http://seleniumhq.github.io/selenium/docs/api/java/index.html
阅读更多选项希望这对你有意义,谢谢