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

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


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();


        }

    }

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


慕村225694
浏览 122回答 1
1回答

慕桂英4014372

您正在看到预期的行为。如果您的用例是打印所有值,然后在文本为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;    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java