为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕村225694 2023-07-28 16:52:54
它不会打印下拉列表中的所有值。它正在将值打印到我要单击的元素,并将其余值打印为空白。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();        }    }我希望我的代码打印下拉列表中的所有值,但实际上它打印的是我要单击的元素的值。
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您正在看到预期的行为。如果您的用例是打印所有值,然后在文本为Angolaclick()的元素上打印,您可以使用以下定位器策略:

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;

    }

}


查看完整回答
反对 回复 2023-07-28
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信