是否可以使用具有不同属性的Xpath读取li的文本?

时间:2015-05-27 06:38:28

标签: html5 selenium xpath selenium-webdriver webdriver

我知道我可以直接使用:

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>

2 个答案:

答案 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')]