我们网页中的下拉菜单不使用常见的选择标签或 Li 标签。这使得在 WebElement 列表中提取和存储列表项文本变得困难。这是 DOM 和下拉列表 Vs 的图像,我还提供了我正在尝试编写的代码
`WebDriver 驱动程序 = getDriver();
List<WebElement> teachers = driver.findElements(By.cssSelector(".rc-virtual-list-holder-inner>div>div"));
for (WebElement myElement : teachers) {
System.out.println(myElement.getText());`
给定 HTML...
要理想地打印项目文本,您需要为 visibilityOfAllElementsLocatedBy() 引入 WebDriverWait,您可以使用以下 定位器策略:
使用cssSelector:
List<WebElement> elements = new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("div.rc-virtual-list-holder-inner div[title] > div")));
for(WebElement element : elements)
{
System.out.println(element.getText());
}
使用xpath:
List<WebElement> elements = new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//div[@class="rc-virtual-list-holder-inner"]//div[@title]/div")));
for(WebElement element : elements)
{
System.out.println(element.getText());
}
stream()
和map()
您可以使用以下定位器策略:
使用cssSelector:
System.out.println(new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("div.rc-virtual-list-holder-inner div[title] > div"))).stream().map(element->element.getText()).collect(Collectors.toList()));
使用xpath:
System.out.println(new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//div[@class="rc-virtual-list-holder-inner"]//div[@title]/div"))).stream().map(element->element.getText()).collect(Collectors.toList()));