2016-10-27 10 views
1

のHTMLを返さない:GetTextは()の明確化XPathは値

<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

私はあなたがセレンを使用していると仮定します。その場合は、それぞれのタグを追加してください。 – Markus

答えて

1

を使用することができところで

、ドライバ。

角度が問題であるという問題は、ページが読み込まれた後にjavascriptによってレンダリングされます。だから、スクラップしたい最初の要素はそこにないかもしれません。解決策は、角度のレンダリングが終了するまで秒間待ってから要素を検索することです。

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

はい、xpathは正しいです、レンダリング時間に問題、あなたのコメントのおかげで – Prabu

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式の外にあります。あなただけのノードのテキストが必要な場合、あなたは私はあなたがangularJSアプリケーションをスクラップしようとしているとあなたはセレンウェブを使用している推測している属性ng-bindから

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