2016-10-27 3 views
1

Html:GetText() Klärung - XPath nicht die Rückgabe des Werts

<strong class="text-xl ng-binding" ng-bind="summary.PublishedIssuedRecent">5</strong> 

meine XPath:

@FindBy(how = How.XPATH, using = "//strong[@ng-bind='summary.PublishedIssuedRecent']") 
public WebElement countRecentlyPublishedApplication; 

String pubCount = countRecentlyPublishedApplication.getText(); 

meine Erwartung

i den Wert von 5

extrahieren möchten aber ich bekomme leeren Wert in der pubCount String, bitte schlagen Sie vor, wenn irgendein Fehler in mein xpath

+0

Ich nehme an, Sie verwenden Selen, oder? Wenn ja, fügen Sie bitte das entsprechende Tag hinzu. – Markus

Antwort

1

Von Attribut ng-bind verwenden Ich vermute, Sie AngularJS Anwendung verschrotten sind versuchen, und Sie verwenden Selen Web Treiber.

Problem mit eckigen ist, wird es von Javascript nach dem Laden der Seite gerendert. Also am Anfangselement, das Sie verwerfen möchten, ist möglicherweise nicht da. Lösung könnte sein, eine Sekunde zu warten, bis Angulars das Rendern beendet hat und dann versuchen, Element zu finden.

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

ja, der Xpath korrekt, Problem in der Renderzeit, danke für Ihre Kommentare – Prabu

1

Der XPath-Ausdruck an sich ist korrekt, er wählt Ihren Knoten wie erwartet aus. Ein einfacher Test mit xmllint gibt:

> xmllint --xpath "//strong[@ng-bind='summary.PublishedIssuedRecent']" ~/test.html 
<strong class="text-xl ng-binding" ng-bind="summary.PublishedIssuedRecent">5</strong> 

So ist der Fehler außerhalb des XPath-Ausdruck ist.

By the way, wenn Sie nur den Text des Knotens benötigen, können Sie

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