首页 > 解决方案 > text() 不是有效的 XPath 表达式

问题描述

<div ng-class="{'col-xs-4':sale.Sale.WarrantyExtensionFunctionAvailable ,'col-xs-6':!sale.Sale.WarrantyExtensionFunctionAvailable }" class="ng-binding col-xs-4">
    <b>Reference: </b>ABCD<br>
    <b>Serial number:</b> 12345678<br>
</div>

我想找到文本 ABCD,我试过这个

driver.findElements(By.xpath("//div[@ng-class='{'col-xs-4':sale.Sale.WarrantyExtensionFunctionAvailable ,'col-xs-6':!sale.Sale.WarrantyExtensionFunctionAvailable }']/text()")).get(2);

但我收到以下错误:

org.openqa.selenium.InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression //div[@ng-class='{'col-xs-4':sale.Sale.WarrantyExtensionFunctionAvailable ,'col-xs-6':!sale.Sale.WarrantyExtensionFunctionAvailable }']/text() because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//div[@ng-class='{'col-xs-4':sale.Sale.WarrantyExtensionFunctionAvailable ,'col-xs-6':!sale.Sale.WarrantyExtensionFunctionAvailable }']/text()' is not a valid XPath expression.

有没有找到这种类型的文本的最佳实践?

标签: javaselenium

解决方案


我认为这应该在这里工作

driver.findElement(By.xpath("(//div[contains(@ng-class,'sale.Sale.WarrantyExtensionFunctionAvailable')]/text())[1]")).getText();

推荐阅读