[英]Java Selenium multiple table structure, iterate through all
我有一个表,其中的行在另一个表的行内,该表的行很多(其他表的行)。
哇。 令人困惑。 让我在你面前布置它!
.//*[@id='chatComponent']/div/swx-navigation
/div/div/div/div[2]/div[1]/div/ul/li[*]/div/ul/li[*]
firstTable和行从此处开始:
firstTable = /div/div/div/div[2]/div[1]/div/ul/li[*]
secondTable和行从此处开始:
secondTable = firstTable/div/ul/li[*]
这是我的代码,我在这里尝试如何System.out.print表中的所有项目(位于第一个表中)
List<WebElement> liElements = driver.findElements(By
.xpath(".//*[@id='chatComponent']/div/swx-navigation/div/div/div/div[2]/div[1]/div/ul/li[*]"));
List<WebElement> liElements2 = driver.findElements(By
.xpath(".//*[@id='chatComponent']/div/swx-navigation/div/div/div/div[2]/div[1]/div/ul/li[*]/div/ul/li[*]"));
System.out.println(liElements.size());
System.out.println(liElements2.size());
for (int i = 1; i < liElements.size()+1; i++) {
if (i < liElements.size() ){
WebElement linkElement = driver
.findElement(By
.xpath(".//*[@id='chatComponent']/div/swx-navigation/div/div/div/div[2]/div[1]/div/ul/li[1]/div/ul/li[" + i + "]"));
System.out.println(linkElement.getText());
} else if (i == liElements.size()){
WebElement linkElement2 = driver
.findElement(By
.xpath(".//*[@id='chatComponent']/div/swx-navigation/div/div/div/div[2]/div[1]/div/ul/li[*]/div/ul/li[" + i + "]"));
System.out.println(linkElement2.getText());
}
}
现在的问题是,它将遍历表的第一个表,直到找不到更多对象,然后引发错误,但是它不会移动到下一个表以在该表中打印对象。 只是说好,打印了该表中的所有元素,但是继续在该表中查找其他不存在的元素而失败。
我在问,我怎么能做到这一点?
非常感谢您的协助。
您应该遵循以下算法:
从外部表中的每一行中,找到每个内部表中的行,然后遍历内部表中的行。
// find all the rows in the outer table List<WebElement> outerLIElementList = driver.findElements( By.xpath(".//*[@id='chatComponent']/div/swx-navigation/div/div/div/div[2]/div[1]/div/ul/li")); System.out.println(outerLIElementList.size()); // iterate through the rows in the outer element for (WebElement outerLIElement : outerLIElementList) { // find the inner table rows using the outer table row List<WebElement> innerLIElementList = outerLIElement.findElements(By.xpath("//div/ul/li[*]")); // iterate through the inner table rows and sysout for (WebElement innerLIElement : innerLIElementList) { System.out.println(innerLIElement.getText()); } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.