2017-01-24 1 views
1

Ich hoffe, Sie können mir helfen.Java Selenium - Finden Sie Zeichenfolge Text aus mehreren Divs mit demselben Klassennamen mit Xpath

Ich habe hier alle Arten von Foren und Fragen zum Durchlaufen mehrerer divs mit demselben Klassennamen mit xpath-Abfragen durchlaufen. Ich bin ziemlich neu zu WebDriver und Java, also stelle ich wahrscheinlich die Frage nicht richtig.

Ich habe eine Tabelle, in der ich versuche, die Werte innerhalb zu identifizieren und sicherzustellen, dass sie korrekt sind. jedes Feld die gleiche Klasse Kennung hat, und ich bin in der Lage, erfolgreich das erste Ergebnis zurückziehen und über die Berichtsprotokollierung mit dem folgenden

String className1 = driver.findElement(By.xpath("(//div[@class='table_class'])")).getText(); 
Reporter.log("=====Class Identified as "+className1+"=====", true); 

jedoch bestätigen, wenn ich dann versuchen, und durchläuft (ich habe mehrere gesehen ich erhalte einen Compiler-Fehler zu sagen Antworten ein [2] Suffix an die XPath-Abfrage) hinzuzufügen:

String className2 = driver.findElement(By.xpath("(//div[@class='table_class'])")[2]).getText(); 
Reporter.log("=====Class Identified as "+className2+"=====", true); 

die oben einen Fehler „der Typ des Ausdrucks zu sagen gibt muss ein Array-Typ sein, aber es gelöst Von "

Ich bin nicht 100% sicher, wie man das in oder strukturiert um ein Array einzurichten und dann durchzulaufen.

Während dies ist die Überprüfung nur Feldbezeichnungen für jetzt, schließlich muss ich diesen Ansatz verwenden, um die nachfolgenden Daten zu überprüfen, die durchgezogen wird, und ich werde das gleiche Problem haben, dann

+0

Gibt es einen Grund, warum Sie XPath verwenden möchten oder können Sie CSS-Selektoren verwenden? – Corporalis

+0

Kein besonderer Grund für die Verwendung von Xpath über CSS-Selektoren, aber viele der Dinge, die ich online gelesen habe alle verwenden XPath so angenommen, das war die "richtige" Art es zu tun – cookmr86

+0

Aber zurück zur Frage, könnten Sie 'Treiber verwenden .findElements "und durchschleifen, anstatt jedes Element individuell anzugehen? – Corporalis

Antwort

0

Sie erhalten den Fehler für -

String className2 = driver.findElement(By.xpath("(//div[@class='table_class'])")[2]).getText(); 

weil Sie Index in falschem Weg verwenden ändern Sie es zu -

String className2 = driver.findElement(By.xpath("(//div[@class='table_class'])[2]")).getText(); 

oder

String className2 = driver.findElement(By.xpath("(//div[@class='table_class'][2])")).getText(); 

Und der bessere Weg, dies zu tun ist -

int index=1; 
List <WebElement> allElement = driver.findElements(By.xpath("(//div[@class='table_class'])")); 
for(WebElement element: allElement) 
{ 
    String className = element.getText(); 
    Reporter.log("=====Class Identified as "+className+""+index+""+"=====", true); 
    index++ 
} 
+0

Danke für Ihre Antwort. Ich war nicht in der Lage, die ersten beiden vorgeschlagenen Optionen zu bekommen, aber ich konnte den "besseren" Weg zur Arbeit finden – cookmr86

Verwandte Themen