2016-04-11 25 views
3

Belirli bir öğeden sonra gelen bir metni almak istiyorum. Tam olarak "Hesap" içeriyor <span> sonra gelen metni almak istiyorumSelenium Webdriver'da, bir elemandan sonra metin nasıl alınır?

<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> 

: Pleases örnek kodu görünüyor. Bu xpath kullanarak : çıkışı web öğesi değildir ve bir metin olduğu için

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

Java, bana bir hata verir. Bu nedenle findElement öğesini kullanmak mümkün değildir.

Bu metni nasıl temiz bir şekilde almanın bir yolu var mı? Yani tüm metinleri almak istemiyorum: (bu durumda) gönderici \ [email protected] \ nasdas ve sonra istenen metni ayıklamak.

+1

Ne yazık ki, bunu 'findElement()' kullanarak yapamazsınız. İlgili soru: [Düğümden metin alma] (http://stackoverflow.com/questions/8505375/getting-text-from-a-node/) – har07

+0

@ har07 Çok teşekkür ederim. Maalesef başka yolu yok! – Jose

+0

evet bir cevap plz aşağıda cevabımı kontrol et –

cevap

-1

Sen Selenyum'un getText() yöntemi gibi bir şey kullanabilirsiniz: -

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

senin xpath olabilir: -

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

Üzgünüm ama yanlış, metin dozu öğeye ait değil. Bence bunu açık bir şekilde açıkladım ve HTML örneğinde görülebilir. Belirsiz ise lütfen bana bildirin, o zaman sorularımı değiştireceğim. Cevabınız için teşekkür ederim. – Jose

+0

xpath'i değiştirdim – Paras

0

aşağıda deneyin: -

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

o olacak Umut yardım et :)

+0

Bu xpath bana öğesini veriyor. Metin, öğesinin içinde olmadığından, getText() yöntemini kullanamıyorum. Metin, tam olarak öğesinden sonra gelir ve bildiğim kadarıyla getFollowingText() gibi bir yöntemimiz yoktur. – Jose

+0

cevabımı düzenledim .. –

2

HI, Hesaptan hemen sonra metni ayıklamanın mümkün bir yolu olmadığını düşünüyorum: yani tam metin = 'asdas' metnine karşılık gelen bir 'xpath =' asdas 'dir

tam olarak text =' asdas 'okumayı denemek yerine doğrudan p etiketindeki metni ve etiketi çıkarmak için aşağıdaki gibi işlemi gerçekleştirin.

// 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 verir gözden geçirin: sunana [email protected] asdas ve iç metin içi yayılma düğümlerini vermez! – Jose

+0

özür dilerim alamadım alamadım alamadım herhangi bir isim: e-posta adresi: hesap: eğer evet sonra plz bakmak ben de yayınlanmıştır çıkış ve açıkça gösterir açıkça tüm öğeleri (iç metin iç span) indside span düğümleri –

0

yardımcı bu

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

Hope gibi olacak Bu mükemmel çalışıyor. Eğer değilse, lütfen span sınıfının önüne div sınıfı ekleyin.

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

Hope:

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]); 

ve çıkış bu Aşağıdaki metin düğümü almak için JavaScript bir parça kullanabilirsiniz size