无法识别selenium中的Xpath元素

时间:2017-09-12 14:05:36

标签: c# selenium

尝试使用selenium c sharp(哈希标记不起作用)查找元素时遇到一些问题。

我有这个元素:

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

我还有另一个元素完全相同但有不同的文本:

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

我想找到包含'Travel essentials'的那个,所以我写了下面的代码试着找到它:

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

但是,它声明它不是有效的xpath,我该如何正确检索这个元素?

由于

5 个答案:

答案 0 :(得分:1)

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

这应该可以解决问题。

答案 1 :(得分:1)

如果您在某个时刻需要它们或想要在整个集合中操作,您可以抓住它们并将它们放入列表中:

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();
}

答案 2 :(得分: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关联的元素。在编写代码之前,您可以使用此代码验证XPath

答案 3 :(得分:0)

请使用以下xpath进行确切的文本验证,同时具有部分或完整的类属性:

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

答案 4 :(得分: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')]");