2016-11-23 93 views
0

我在使用WebDriver中的xpath定位某个元素时遇到了问题。以下是我的方法:在另一个元素中查找所有锚元素的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/')]")); 

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

回答

0

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

如果你想搜索的elements2背景下,如下you need to search with .//xpathanchor元素: -

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/']")); 
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')]")); 
相关问题