我知道我可以直接使用:
driver.FindElement(By.XPath("//ul[3]/li/ul/li[7]")).Text
获取文本..但我尝试使用Xpath和不同属性的组合来获取文本,例如text()
,contains()
等。
//ul[3]/li/ul/li//[text()='My Data']
除了我提到的那个之外,请建议我处理这个问题的不同方法。
<li class="ng-binding ng-scope selectedTreeElement" ng-click="orgSelCtrl.selectUserSessionOrg(child);" ng-class="{selectedTreeElement: child.organizationId == orgSelCtrl.SelectedOrg.organizationId}" ng-repeat="child in node.childOrgs" style="background-color: transparent;"> My Data </li>
答案 0 :(得分:1)
看起来你的xpath中有额外的“/”并且你错过了dot: // ul [3] / li / ul / li // [text()='我的数据']
试试这个: .// [3] / li / ul / li [text()='我的数据']
但是你只使用xpath作为find元素,而不是用于读取它的属性。如果您需要读取其中的属性或文本,则需要在搜索后使用selenium。
答案 1 :(得分:0)
.Text
的{p> WebElement
只会返回元素的文本。
如果您想对文本做出预期,请检查XPath表达式中的text()
,例如:
//ul[3]/li/ul/li[text()='My Data']
或使用contains()
:
//ul[3]/li/ul/li[contains(text(), 'My Data')]
您可以使用其他功能,请参阅Functions - XPath。
您还可以将其与其他条件结合使用。例如:
//ul[3]/li/ul/li[contains(@class, 'selectedTreeElement') and contains(text(), 'My Data')]