java - getText() 方法不打印所有下拉值

标签 java selenium gettext webdriverwait getattribute

它不会打印下拉列表中的所有值。它正在将值打印到我要单击的元素,并将其余值打印为空白。

driver.get("https://some-url.com");

driver.findElement(By.xpath("//*[@id='example']/div[4]/div/div[2]/div[4]/div[1]/div[6]/div/input[2]")).click();

List<WebElement> allOptions = driver.findElements(By.xpath("//div[@class='menu transition visible']/div"));

for (int i = 0; i < allOptions.size(); i++) {

    System.out.println(allOptions.get(i).getText());

    if (allOptions.get(i).getText().equalsIgnoreCase("Angola")) {
        allOptions.get(i).click();

        }
    }

我希望我的代码打印下拉列表中的所有值,但实际上它打印的是我要单击的元素的值。

最佳答案

您正在看到预期的行为。如果您的用例是打印所有值,然后在文本为 Angola 的元素上 click(),则可以使用以下 Locator Strategies :

driver.get("https://some-url.com");
driver.findElement(By.xpath("//*[@id='example']/div[4]/div/div[2]/div[4]/div[1]/div[6]/div/input[2]")).click();
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//div[@class='menu transition visible']/div"))).stream().map(element->element.getAttribute("innerHTML")).collect(Collectors.toList()););
List<WebElement> allOptions = driver.findElements(By.xpath("//div[@class='menu transition visible']/div"));
for (int i = 0; i < allOptions.size(); i++) {
    if (allOptions.get(i).getText().equalsIgnoreCase("Angola")) {
        allOptions.get(i).click();
        break;
    }
}

关于java - getText() 方法不打印所有下拉值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57918909/

相关文章:

c# - 忽略 ChromeDriver 用户偏好

ruby - Appium - 等待 webview 加载

PHP 本地化最佳实践?获取文本?

gettext - 如何使用 gettext 查找未标记的字符串?

java - 保持最小应用程序服务器依赖性的方法?

java - 如何使用 lp_solve 和 Java 包装器设置自由变量

python - 从 Python 通过 Whatsapp 发送文件

python gettext 错误 : Can't convert '__proxy__' object to str implicitly

java - 安卓横向布局

java - 如何在子组件中包含标准HST组件的所有参数?