我可以使用Xpath作为元素列表来获取名称列表而不是javascript吗?

时间:2014-12-30 09:50:28

标签: javascript xml xslt selenium xpath

我可以使用XPath获取<td>元素列表来获取名称列表而不是javascript吗?

例如,

IMDB如果我们说:

 "$x('//tbody//tr[1]//td[2]/a/text()')" 

使用Chrome浏览器,我们获得了第一部电影片名。

如果我真的想要250个电影片,我应该去一些javascript并迭代所有元素。,或者是否有任何解决方案可以让所有电影片头只有XPATH本身?

3 个答案:

答案 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做任何事情。