列表中的第一个很容易,因为您可以使用find元素。我找到了该元素,需要从之前和之后的div中获取信息。对于列表中的“ n”元素,用于向后/向后移动到其他关联的div的xPath语法是什么?
我尝试了如下x路径,例如:
following-sibling::div
/following-sibling::div
./following-sibling::div
还有许多其他。我只是没有找到正确语法的文档。
答案 0 :(得分:0)
上一个:
选择当前节点之前的所有节点,如下屏幕所示。
关注对象:
选择上下文节点的以下同级。兄弟姐妹与当前节点处于同一级别,如以下屏幕所示。它将在当前节点之后找到该元素。
Here,您可以找到包含示例的正确语法。
您也可以使用drive.findElements();
方法来查找相似的元素。它将返回您可以迭代以获取信息的元素的集合。
答案 1 :(得分:0)
如果您将Java与CSS结合使用,我会说最好使用for循环
driver.findElements(By.cssSelector(“。following-sibling”));
//。查找所有div
答案 2 :(得分:0)
此答案完全取决于您要自动执行的页面上显示的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())
}
正如我提到的,这只是一个通用解决方案,可让您了解其工作方式。如果您想对定位器策略有所帮助,则发布HTML将很有帮助。
答案 3 :(得分:0)
如果要查找多个元素,请查找以下示例供参考。根据您的站点,您需要实现相同的逻辑。
请参考上面的屏幕截图,其中我正试图从Google获取两个突出显示的按钮的标签
13.0
4
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 25 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 30 "," 3 LastName ""
4 SQLCHAR 0 11 "\r\n" 4 BirthDate ""
输出:
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();
}
答案 4 :(得分:0)
因为第一个很容易;每个elementList都有一个当前时间和至少一张图片
for(i = 1; i