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中是否有错误
答案 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();