尝试使用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,我该如何正确检索这个元素?
由于
答案 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是否返回正确的元素,请执行以下步骤。
现在打开控制台并输入以下命令。您将获得与相应XPath关联的元素。
$x("//div[contains(text(),'Travel essentials') and @class='confirmation-price-summary__price-label underline']")
此命令应返回与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')]");