GetText()澄清 - xpath不返回值

时间:2016-10-27 07:17:17

标签: java angularjs selenium xpath

HTML:

<strong class="text-xl ng-binding" ng-bind="summary.PublishedIssuedRecent">5</strong>

我的xpath:

@FindBy(how = How.XPATH, using = "//strong[@ng-bind='summary.PublishedIssuedRecent']")
public WebElement countRecentlyPublishedApplication;

String pubCount = countRecentlyPublishedApplication.getText();

我的期望

我想提取5

的值

但是我在pubCount字符串中得到空值,请建议我的xpath中是否有错误

2 个答案:

答案 0 :(得分:1)

XPath表达式本身是正确的,它按预期选择您的节点。使用xmllint进行简单测试即可:

> xmllint --xpath "//strong[@ng-bind='summary.PublishedIssuedRecent']" ~/test.html
<strong class="text-xl ng-binding" ng-bind="summary.PublishedIssuedRecent">5</strong>

因此错误超出了XPath表达式。

顺便说一句,如果你只需要节点的文本,你可以使用

> xmllint --xpath "//strong[@ng-bind='summary.PublishedIssuedRecent']/text()" ~/test.html
5

答案 1 :(得分:1)

来自属性ng-bind我猜你正在尝试废弃angularJS应用程序而你正在使用selenium web驱动程序。

角度问题是,在页面加载后由javascript呈现。所以在开始元素你想废弃可能不在那里。解决方案可能是等待一秒钟,直到角度完成渲染,然后尝试找到元素。

driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
WebElement pubCount = driver.findElement(By.xpath( "//strong[@ng-bind='summary.PublishedIssuedRecent']")).getText();