gpt4 book ai didi

java - 如何在 xpath 变量旁边附加 "descendant"子句?

转载 作者:行者123 更新时间:2023-12-01 14:19:48 26 4
gpt4 key购买 nike

这就是我的代码的样子

    public void someTest() {
String x = "/html/body/div/div["
String y = "]/a"
for (int i = 1; i < 5; i++){
String links = x + i + y;
driver.findElement(By.xpath(links)).click(); // This will iteratively go to the next link and click on it
}
}

但是,我想要实现的是,一旦单击链接,它就应该查找后代链接并单击这些链接。那么有办法做到这一点吗?如果我尝试类似以下的操作,会起作用吗?

    driver.findElement(By.xpath(links/descendant::a).click(); 

最佳答案

这是一种脆弱的编码方式,在循环过程中会改变 xpath。相反,我建议使用 findElements 方法并循环它返回的元素,如下所示:

public void someTest() {
xpath xpath_findlinks = "/html/body/div/div/a";
xpath relative_xpath = "./..//a";
for (WebElement eachlink : driver.findElements(By.xpath(xpath_findlinks))) {
eachlink.click();
for (WebElement descendantlink : eachlink.FindElements(By.xpath(relative_xpath))) {
descendantlink.click();
}
}
}

请注意一个关键的区别。第一次调用 findElements 时,它位于驱动程序上,因此它会查找整个 html;但第二次,它被作为特定元素(当前链接)的方法调用,因此您可以使用它来查找与该链接相关的元素 - 例如寻找后代。

我推荐使用这种结构;然而,如果不知道你的整体 html,就很难知道要使用什么相对 xpath。我提供的只是相对 xpath 的一个示例,其开头为 ./

关于java - 如何在 xpath 变量旁边附加 "descendant"子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17709241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com