我可以使用XPath
获取<td>
元素列表来获取名称列表而不是javascript吗?
例如,
IMDB如果我们说:
"$x('//tbody//tr[1]//td[2]/a/text()')"
使用Chrome浏览器,我们获得了第一部电影片名。
如果我真的想要250个电影片,我应该去一些javascript并迭代所有元素。,或者是否有任何解决方案可以让所有电影片头只有XPATH
本身?
答案 0 :(得分:2)
您无法使用单个xpath查找所有tds
。您必须找到父元素,然后迭代子元素。
这样的事情:
List<WebElement> rows = driver.findElement(By.cssSelector("table[class='chart']")).findElement(By.tagName("tbody")).findElements(By.tagName("tr")); //list of all rows
for(WebElement row: rows)
//do your operation here
答案 1 :(得分:1)
如果您从[1]
中移除tr
,则应该能够获得所有匹配的项目:
List<WebElement> links =
driver.findElements(By.xpath("/table[@class='chart']/tbody/tr/td[2]/a"));
for (WebElement link : links) {
System.out.println(link.getText());
}
答案 2 :(得分:0)
如果您在HTML上运行类似tagsoup的内容,它会将其转换为格式良好的XML,一旦格式良好的XML,您就可以随心所欲地使用任何版本的Xpath做任何事情。