繁体   English   中英

如何为标记外的文本编写XPath?

[英]How to write XPath for the text present outside the tags?

<div class="accordion_browse">
  <a target="_blank" href="https://www.silverpages.sg/tools/e-care-locator" 
   aria-expanded="false" aria-controls="collapseExample">
    <span class="browse_img">
        <img src="/sites/assets/assets/directory/icons/eldercare.png"/>
    </span>
    Eldercare Services
    <i class="indicator fa fa-chevron-right pull-right" aria-hidden="true"/>
  </a>
</div>

注意:必填文字为“养老服务”

码:

string Eldercare = driver.FindElement(By.XPath("//a[contains(.,'Eldercare Services')")).Text; 
Console.WriteLine(Eldercare + " found");
Assert.IsTrue(Eldercare.Contains("Elder"), Eldercare + " not found"); 

使用文本节点text()检索文本节点

XPath: "/body/div/text()"

这将检索/body/div所有子文本节点。

"/body/div/text()[1]"将检索/body/div的第一个文本节点

有关XPath的其他阅读: https : //www.w3schools.com/xml/xpath_examples.asp

给定的xpath看起来不错,但By.XPath("//a[contains(.,'Eldercare Services')")示例代码缺少右方括号: By.XPath("//a[contains(.,'Eldercare Services')]")

使用此修复程序,xpath将给a元素

 <a target="_blank" href="https://www.silverpages.sg/tools/e:care:locator" aria:expanded="false" aria:controls="collapseExample"> <span class="browse_img"> <img src="/sites/assets/assets/directory/icons/eldercare.png"/> </span> Eldercare Services longtext <i class="indicator fa fa:chevron:right pull:right" aria:hidden="true"/> </a> 

缺少的括号应修复该代码。

如果Selenium可以处理文本元素,则可能是

//a[contains(.,'Eldercare Services')]/text()

结果将是一个包含3个字符串的字符串数组。 中间的一个具有预期的字符串,因为在span之前和i元素之后可能会有两个空字符串。

Text = 

Text = 
    Eldercare Services longtext

Text = 

如果对文本使用第二个过滤器,则只会得到预期的字符串

//a[contains(.,'Eldercare Services')] / text()[contains(。,'Elder'')]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM