Java 基于findElements的列表循环是如何工作的?
列表中的第一个元素很简单,因为您可以使用find元素。我找到元素,需要从前面和后面的div中获取信息。对于列表中的“n”元素,用于移动/向后移动到其他相关div的xPath语法是什么 我尝试了各种x路径以下语法,例如:Java 基于findElements的列表循环是如何工作的?,java,selenium,xpath,Java,Selenium,Xpath,列表中的第一个元素很简单,因为您可以使用find元素。我找到元素,需要从前面和后面的div中获取信息。对于列表中的“n”元素,用于移动/向后移动到其他相关div的xPath语法是什么 我尝试了各种x路径以下语法,例如: following-sibling::div /following-sibling::div ./following-sibling::div 还有很多其他的。我只是没有找到正确语法的文档。前面的: 选择当前节点之前的所有节点,如下图所示 以下兄弟姐妹: 选择上下文节点的以
following-sibling::div
/following-sibling::div
./following-sibling::div
还有很多其他的。我只是没有找到正确语法的文档。前面的: 选择当前节点之前的所有节点,如下图所示 以下兄弟姐妹: 选择上下文节点的以下同级。同级节点与当前节点处于同一级别,如下图所示。它将在当前节点之后找到元素 您可以通过示例找到正确的语法
您还可以使用
drive.findElements()代码>方法以查找相似的元素。它将返回元素集合,您可以迭代这些元素来获取信息。如果您将java与css结合使用,则最好使用for循环
driver.findElements(由.cssSelector(“以下同级”)
//。查找所有div此答案完全取决于您试图自动执行的页面上显示的HTML
如果没有这个上下文,我只能提供一个一般性的答案,但下面是我如何循环遍历元素列表并从前面/后面的div
中获取信息:
// locate the elements you want to iterate
List<WebElement> elements_to_iterate = driver.findElements(By.xpath(someLocatorHere))
// iterate the elements in a foreach loop
for (WebElement element : elements_to_iterate) {
// get preceding sibling
WebElement preceding_element = element.find_element_by_xpath("./preceding-sibling::div")
print(preceding_element.getText())
// get following sibling
WebElement following_element = element.find_element_by_xpath("./following-sibling::div")
print(following_element.getText())
}
//找到要迭代的元素
List elements_to_iterate=driver.findElements(By.xpath(someLocatorHere))
//迭代foreach循环中的元素
for(WebElement元素:元素到元素迭代){
//获得前兄弟姐妹
WebElement preference\u element=element。通过\u xpath(“./preference sibling::div”)查找\u element\u
打印(在元素.getText()之前)
//获得以下兄弟姐妹
WebElement following\u element=element.find\u element\u by\u xpath(“./following sibling::div”)
打印(在\u元素.getText()之后)
}
正如我提到的,这只是一个通用的解决方案,让您了解这将如何工作。如果您需要定位器策略方面的帮助,发布HTML会很有帮助。如果您想查找多个元素,请查找以下示例以供参考。基于您的站点,您需要实现相同的逻辑
请参考上面的截图,我正试图从谷歌获得两个突出显示按钮的标签
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com"); // URL in the browser
driver.manage().window().maximize(); // Maximize the browser
String expectedTooltip="Search";
List<WebElement> Listelements = driver.findElements(By.xpath("//div[@class='FPdoLc VlcLAe']//input"));
for (WebElement element: Listelements)
{
System.out.println("Element Text::"+element.getAttribute("aria-label"));
}
driver.close();
}
因为第一个很容易;每个元素列表都有一个当前时间和至少一张图片
对于(i=1;i }您可能需要发布您正在使用的HTML来帮助我们回答此问题。如果没有HTML引用,很难将此问题可视化。用于迭代元素的代码示例也会有所帮助。
Element Text::Google Search
Element Text::I'm Feeling Lucky