2015-07-15 16 views
5

Hallo, ich versuche, mehrere Elemente mit dem gleichen className zu finden. Der Klassenname und die Körperstruktur der Elemente sind gleich, aber die Texte, Links und Bilder sind unterschiedlich.Selen - mehrere Elemente mit demselben Klassennamen suchen

<div class="dc-content-right clearfix"> (parent) 
    <div class="dc-item clearfix">  (child nodes) 
    <div class="dc-item clearfix"> 
    <div class="dc-item clearfix"> 

Jedes dieser Elemente Kind sieht ungefähr so ​​aus:

<div class="dc-item clearfix"> 
    <div class="dc-icon"> 
    <div class="dc-info"> 
    <h2> 
     <a href="http://www.avg.com/ww-en/free-antivirus-download">AVG AntiVirusFree 2015</a> 
    </h2> 

Jedes Kind-Element hat verschiedenen Text im H2-Tag. Also, sobald es AVG AntiVirus Free 2015 ist, dann ist es Internet Security .... und so weiter. Also möchte ich alle Elemente in einer Liste speichern und dann mit ihnen arbeiten. Zuerst speichere ich diese Elemente intto eine Liste von WebElements:

List <"WebElement"> list = driver.findElements(By.xpath("//div[@class='dc-item clearfix']")); 

Danach möchte ich durch die Liste zu durchlaufen und die h2 Text für jedes Element auf dem Bildschirm schreiben:

for(WebElement i:superDiv) 
      { 
       System.out.println(i.findElement(By.xpath("//h2/a")).getText()); 
      } 

So das Ergebnis sollte eine Liste von 3 verschiedenen Überschriften sein, die aus divs extrahiert wurden. Die Problem: Das Ergebnis ist die Liste der 3 Überschriften, die sind die gleichen!

AVG AntiVirus Free 2015 
AVG AntiVirus Free 2015 
AVG AntiVirus Free 2015 

Es sieht aus wie ich das gleiche Element 3 Mal gefunden habe. Hat jemand eine Idee was das Problem sein könnte? Danke

Antwort

4
List<WebElement> list = driver.findElements(By.xpath(".//*[@class='dc-item clearfix']//h2/a")); 
    for(WebElement el : list) { 
     System.out.println(el.getText()); 
    } 
+0

Danke, dass alle den Text schreiben, wird es in einem Kind-Element finden kann, (Links, Beschreibungen, Header ...) Ich würde möchte nur auf das h2-Tag zugreifen. – Zawe

+0

ya, ich habe die Frage falsch gelesen. Ich habe den XPath seit dem aktualisiert, funktioniert der neue? – Cathal

+0

Ja, es funktioniert. Vielen Dank. Aber der springende Punkt war ... ist es möglich, zuerst das ganze Kindelement zu speichern. Liste <"WebElement"> list = driver.findElements (By.xpath ("// div [@ class = 'dc-item clearfix']")); und dann Zugriff auf die verschiedenen Teile davon. Etwas wie list.get (1) .findElement (By.xpath ("// h2/a")). GetText(). Weißt du, ob sowas überhaupt möglich ist? – Zawe

1

Sie können auch versuchen: -

List<WebElement> list = driver.findElements(By.xpath(".//*[@class='dc-info']//a")); 
    for(WebElement element : list) { 
     System.out.println(element.getText()); 
    } 
Verwandte Themen