2016-11-23 76 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')]")); 
相關問題