当元素没有任何属性时如何创建xpath定位器

时间:2019-07-16 08:51:27

标签: selenium automated-tests ui-automation qa

如果特定元素没有任何属性,如何使用xpath选择器访问该元素?

<challenge-details-card>
<div class="card-body card-content-container">
<div>
<h1 class="card-title text-clr-tertiary">Custom Name</h1>
<hr class="border-clr-gainsboro">
<h3 class="card-info text-clr-tertiary"><span translate="Challenges.ChallengeRuns" ng-reflect-translate="Challenges.ChallengeRu">Challenge runs: </span> 
July 15 - July 27 
<!--bindings={
  "ng-reflect-ng-if": "true"
}-->
<span>(12 days <span translate="Genesis.GlobalLabels.Left" ng-reflect-translate="Genesis.GlobalLabels.Left">Left</span>!)</span>
</h3><p class="card-copy">Custom Text</p>
</div>
</div>
<div class="card-footer background-clr-light-gray">
<a translate="Genesis.Challenges.ViewChallengeRules" ng-reflect-translate="Genesis.Challenges.ViewChallen">View Challenge Rules</a>
</div>
</challenge-details-card>

http://prntscr.com/ofnudx

我正在尝试创建一个xpath来获取“ 7月15日-7月27日”文本。

3 个答案:

答案 0 :(得分:1)

您可以使用XPath text()运算符结合innerText()函数来访问h3 tagcontains()属性,例如:

//h3[contains(text(),'July 15 - July 27')]

演示:

enter image description here

参考文献:

答案 1 :(得分:0)

该文本显示在 h3 标签下。

您可以尝试使用此 css选择器

h3.card-info.text-clr-tertiary

如果要使用xpath:

//h3[contains(@class,'card-info text-clr-tertiary')]

您可以使用getText()方法获取selenium-Java库中显示的文本。

答案 2 :(得分:0)

要提取文本 7月15日-7月27日,您可以使用以下Locator Strategy

  • Java xpath

    System.out.println((String)((JavaScriptExecutor)driver).executeScript("return arguments[0].childNodes[2].textContent;", new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(., 'Challenge runs')]/..")))));