2016-05-05 2 views
0

Sie möchten Text erhalten, der sich außerhalb eines Tags befindet. Hier ist der HTML:So erhalten Sie Text außerhalb des Tags

<table border="0" cellpadding="0" cellspacing="0" width="100%" 
     class="viewingsCommentsTbl"> 
    <tbody> 
    <tr> 
     <td> 
     <b style="border: 2px solid red; 
        background: rgb(204, 136, 136);">Viewing Conducted: </b> 
     18-May-2016 
     </td> 
    </tr> 
    <tr> 
     <td style=""><b style="">Duration: </b> 1 hr</td> 
    </tr> 
    <tr> 
     <td style=""><b style="">Comments: </b>66yy</td> 
    </tr> 
    </tbody> 
</table> 

Ich wollte Datum dh "18-May-2016"

Ich habe versucht folgende XPath zu bekommen, aber es funktioniert nicht:

//*[@class="viewingsCommentsTbl"]/tbody/tr[1]/td/b 

Antwort

1

Der Text ist in der <td> Tag nicht die <b>. Versuchen

//*[@class="viewingsCommentsTbl"]/tbody/tr[1]/td 
0

Hallo bitte versuchen Sie es wie unten

WebElement dateis = driver.findElement(By.xpath("//*[@class='viewingsCommentsTbl']/tbody/tr/td")); 
System.out.println("Date is : " + dateis.getText()); 

und der Ausgang ist: Datum ist: Anzeigen Leitung: 18-May-2016

// auch wenn Sie möchten, nur extrahieren Datum

dann
String [] extractdate = dateis.getText().split(" "); 
System.out.println("Extracted date is : " + extractdate[2]); 

und der Ausgang ist: Extrahiert Datum ist: 18-May-2016

Hier
0

ist ein robuster Weise "18-May-2016" zu wählen, basierend auf seiner vorhergehenden Viewing Conducted: Label innerhalb einer td in der viewingsCommentsTbl Tabelle unabhängig von Tabellenlayout:

normalize-space(
    substring-after(//table[@class='viewingsCommentsTbl'] 
        //td[starts-with(.,'Viewing Conducted:')],'Viewing Conducted:')) 

dies der Text bekommt außerhalb eines Tags (nach Ihrer Anfrage), indem Sie den Zeichenfolgenwert des Elternelements des Elements auswählen und dann substring-after() verwenden, um nur den Text zu erhalten, der dem Label folgt.