2016-04-11 15 views
3

私は特定の要素の後に正確に来るテキストを取得したいと思います。喜ばせるには、サンプルコードを見て:Selenium Webdriverでは、要素の後にテキストを取得する方法は?

<div id="content-tab-submitter" class=""> 
    <h4>Sender</h4> 
    <p> 
     <span class="screenHidden">Name: </span> 
     submitter 
     <br> 

     <span class="screenHidden">E-mail address:</span> 
     [email protected] 
     <br> 

     <span class="screenHidden">Account: </span> 
     asdas 
     <br> 
    </p> 
</div> 

私は「アカウント」が含まれ、正確<span>の後に来るテキストを取得したいと思います。このXPathを使用することにより :出力がWeb要素ではなく、それがテキストであるため、

//*[@id='content-tab-submitter']/p/span[contains(text(),'Account')]/following::text() 

Javaは、私にエラーを与えます。したがって、findElementを使用することはできません。

このテキストをきれいに取得する方法はありますか。私はすべてのテキストを(この場合は)submitter \ [email protected] \ nasdasにしたくないということを意味し、その後、必要なテキストを抽出します。

+1

残念ながら、あなたは 'findElement()'だけではできません。関連する質問:[ノードからテキストを取得する](http://stackoverflow.com/questions/8505375/getting-text-from-a-node/) – har07

+0

@ har07ありがとう、ありがとう。残念ながら、他の方法はありません! – Jose

+0

はい私の答えを確認する方法があります –

答えて

-1

あなたはセレンのgetText()方法、のようなものを使用することができます -

driver.findElement(By.xpath("xpath of the element")).getText(); 

あなたのXPathができ: -

//span[contains(.,'Account')]/following::text() 
+0

申し訳ありませんが間違っている、テキストは要素に属していません。私は質問でそれをはっきりと説明したと思うし、それはHTMLのサンプルで見ることができます。それがあいまいである場合私に教えてください、私は私の質問を変更します。あなたの答えをありがとう。 – Jose

+0

私は自分のxpathを変更しました – Paras

0

以下試してください: -

//div[@id='content-tab-submitter']//p//span[contains(.,'Account')]/following-sibling::text() 

が、それは願っています助けてください:)

+0

このxpathは私に要素を与えます。テキストは要素内にないので、getText()メソッドを使用することはできません。テキストは要素の後ろに正確に現れ、getFollowingText()のようなメソッドはありません。 – Jose

+0

私の答えを編集しました.. –

2

こんにちは私はアカウントの直後にテキストを抽出するための直接的な方法はないと考えています。つまり、テキスト= 'asdas'を直接参照するxpathです。

正確にtext = 'asdas' pタグ内のテキストを抽出し、以下のように操作してタグを抽出します。

// get the targeted element 
WebElement element = driver.findElement(By.cssSelector("id('content-tab-submitter')/p/span[contains(.,'Account')]")); 

// get the following text 
String text = (String)((JavascriptExecutor)driver).executeScript(
    "return arguments[0].nextSibling.textContent.trim()", element); 
+0

MyCompleteTextは以下を提供します: 投稿者 [email protected] asdas スパンノード内のテキストは表示されません! – Jose

+0

申し訳ありません私はあなたがあなたの名前を取得していないと言うことができません:名前:電子メールアドレス:アカウント:もしそうなら、plz見ても私は出力を掲載していると明らかにすべてのものを示しています –

0

を助け、この

My Complete Text is : Name: submitter 
E-mail address: [email protected] 
Account: asdas 
I am text after Account: asdas 

希望のようになりますこれは完全にうまく動作します。そうでない場合は、spanクラスの前にdivクラスを追加してください。

//span[@class='screenHidden'][contains(., 'submitter')][contains(., '[email protected]')][contains(., 'asdas')] 
0

希望:

WebDriver driver = new FirefoxDriver(); 
driver.get("file:///C:/Users/rajnish/Desktop/myText.html"); 

// xpath for talking complete text i.e all text inside every span tag that comes under p tag 
String MyCompleteText = driver.findElement(By.xpath("//*[@id='content-tab-submitter']/p")).getText(); 

System.out.println("My Complete Text is : " + MyCompleteText); 

// MyCompleteText outputs in console : 
// My Complete Text is : Name: submitter 
// E-mail address: [email protected] 
// Account: asdas 

// now we have to split our MyCompleteText on the basis of Account: 
// as we want text after Account: so do it like below 

String[] mytext = MyCompleteText.split("Account:"); 
System.out.println("I am text after Account: "+ mytext[1]); 

、出力は、これはあなたが次のテキストノードを取得するためのJavascriptの一部を使用することができますあなたの

関連する問題