在另一个元素中找到所有Anchor Elements的xpath是什么?

时间:2016-11-23 08:10:08

标签: java selenium xpath

我在使用WebDriver中的xpath定位某个元素时遇到问题。以下是我的方法:

场景1: 下面找到所有主要元素的' href'包含提供的价值。使用这种方法,我能够找到38个元素。同意。按预期工作。 driver.findElements(By.xpath("//a[contains(@href,'http://www.holidayiq.com/hotels/')]"));

场景2:我首先找到一个名为' Rank-bar'只有一次。然后,我使用相同的xpath来定位此类中的所有锚标记。预期的锚标签是4但是,我仍然使用这种方法找到38个元素。

WebElement elements2 = driver.findElement(By.className("rank-bar"));
elements2.findElements(By.xpath("//a[contains(@href,'http://www.holidayiq.com/hotels/')]"));

我在这里做错了什么?请帮忙。

2 个答案:

答案 0 :(得分:1)

你应该像这样构建一个直接的xpath:

//*[@class='rank-bar']//a[contains(@href, 'http://www.holidayiq.com/hotels')]

如你所见,你使用了包含,这意味着你也可能有:

//*[@class='rank-bar']//a[contains(@href, 'holidayiq.com/hotels')]

从一步中找到元素,如:

driver.findElements(By.xpath("//*[@class='rank-bar']//a[contains(@href, 'holidayiq.com/hotels')]"));

答案 1 :(得分:0)

实际上,您再次在整个文档上下文中查找anchor元素,这就是您找到相同内容的原因。

如果您想在anchor上下文中搜索elements2元素,you need to search with .// xpath如下: -

elements2.findElements(By.xpath(".//a[contains(@href,'http://www.holidayiq.com/hotels/')]"));

或者您可以使用cssSelector在线上找到相同的内容,如下所示: -

List<WebElement> allLinks = driver.findElements(By.cssSelector(".rank-bar a[href*='http://www.holidayiq.com/hotels/']"));