它不会打印下拉列表中的所有值。它正在将值打印到我要单击的元素,并将其余值打印为空白。
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/