2017-09-12 129 views
0

尝试使用硒c sharp(哈希标记不工作)查找元素时遇到小问题。无法识别硒中的Xpath元素

我有这样的元素:

<div class="confirmation-price-summary__price-label underline"> 
    Travel essentials 
</div> 

我也有另一种元素是完全一样的,但与它相关联的不同文本:

<div class="confirmation-price-summary__price-label underline"> 
    Transfer 
</div> 

我想找到一个包含一个'旅行必备品',所以我写下面的代码试试看:

public static By TravelEssentialsBasketLink => By.XPath("//div[text()[contains(.,'Travel essentials')] and [@class='confirmation-price-summary__price-label underline']"); 

然而,它表明它不是一个有效的xpath,我怎样才能正确地检索这个元素?

感谢

+0

做你需要获得或可能获得所有这些元素,或者你只对1元素有兴趣? –

+0

@socalcheesehead我将需要在我的测试中的某个点抓取每个元素 – BruceyBandit

回答

1
By.XPath("//div[contains(text(),'Travel essentials') and @class='confirmation-price-summary__price-label underline']"); 

这应该做的伎俩。

+0

嗨,有可能还有其他div标签包含“旅行必备”,因为它是文本,有没有办法将其定位到类确保它完全正确? – BruceyBandit

+0

是的,现在看我的答案,我编辑它。希望能帮助到你。 – acikojevic

0

尝试下面的XPath:

By.XPath("//div[contains(text(),'Travel essentials') and @class='confirmation-price-summary__price-label underline']") 

这将作为你的XPath你是不是文本检查正常。

要检查XPath是否返回了正确的元素,或者不按照以下步骤操作。

  1. 在Chrome浏览器中打开页面。
  2. 使用F12打开开发人员工具。
  3. 现在打开控制台并键入下面的命令。您将获得与相应的XPath关联的元素。

    $x("//div[contains(text(),'Travel essentials') and @class='confirmation-price-summary__price-label underline']") 
    
  4. 该命令应返回写你可以用这个验证的XPath

1

如果你会需要它们都在某个点的代码与XPath.Before关联的元素或者想操作在整个集合,你可以抓住他们所有,并把它们放入一个列表:

List<WebElements> elements = driver.findElements(By.Xpath("//div[@class='confirmation-price-summary__price-label underline']"); 

for(WebElement element : elements) { 
    String text = element.getText(); 
    if(text.equals("blah")) 
     do_whatever(); 
} 
0

,同时具有partia请使用以下XPath的确切文字验证l或满级属性:

By.XPath("//div[text()='Travel essentials' and contains(@class,'confirmation-price-summary__price-label')]") 
0

我认为你是相当具有非常接近:

public static By TravelEssentialsBasketLink => By.XPath("//div[text()[contains(.,'Travel essentials')] and [@class='confirmation-price-summary__price-label underline']"); 

在这里,我会建议你做一个小更新内容如下:

public static By TravelEssentialsBasketLink => By.XPath("//div[contains(.,'Travel essentials') and (@class='confirmation-price-summary__price-label underline')]");