2016-04-25 2 views
0

Ich habe mehrere div auf einer Webseite, die das gleiche Klassenattribut haben. Ich bin auf der Suche nach einer Möglichkeit, alle div meiner Seite für einen bestimmten Klassennamen zu überprüfen, und dann für jeden dieser div, ihre Xpath.Liste von WebElement find by className Rückgabe Xpath

Eigentlich kann ich überprüfen, wie viele div i mit einem Klassennamen auf der Seite haben:

 List<WebElements> test = driver.findElements(By.className("fitter")); 
    int countDiv = test.size(); 

Haben Sie eine Idee haben, jetzt, bekommen alle meine Elemente Xpath eins nach dem anderen? Oder haben Sie eine andere Lösung?

Mein Projekt ist ein Selenium-Projekt und ich teste eine Webseite. Mein Test ist in Java geschrieben und ich benutze WebDriver.

Dank für Hilfe

+0

würden Sie Sie 'XPath' für jedes Element bedeuten wollen in Liste eindeutig automatisch zu bekommen? – Andersson

+0

Ja das ist es! Ich weiß, dass ich es direkt by.Xpath bekommen kann, aber das Problem ist, dass die Anzahl der div Variablen ist. Also ist der einzige Weg, um alle von ihnen jedes Mal zu erhalten, sie nach Klasse zu bekommen und dann den Xpath zu Aktion lokal – MxfrdA

+0

'findElements' Methode sollte Array von Elementen zurückgeben. Warum rufst du nicht einfach jeden einzelnen Index für jedes Element an? – Andersson

Antwort

0

iterieren einfach durch die Liste der WebElements?

List<WebElement> elements = driver.findElements(By.className("fitter")); 
for (int i = 0; i < elements.size(); i++) { 
    WebElement element = elements.get(i); 
    // ... do whatever you need here 
} 

XPath jedes Element in der Schleife

//div[contains(@class, 'fitter')][i] 
+0

Danke, aber mein Problem ist das "tu was immer du brauchst" ^^ Um für jeden den Xpath zu bekommen. Kann ich einen element.getXpath oder sowas machen? – MxfrdA

+0

Ich glaube nicht, dass es einen Weg gibt, einen xpath für jedes Element einzeln im allgemeinen Fall zu extrahieren. Aber wenn Sie bereits den Klassennamen haben, können Sie etwas wie 'driver.findElement (By.xpath (" // * [contains (@class, 'fitter ")] [i]")); ' – kanghj91

+0

So natürlich, die xpath für jedes Element ist '" // * [contains (@class, 'fitter')] [i] "' wobei i die Kontrollvariable der Schleife ist. Wenn du nur auf divs fokussieren willst, dann ist es "" div [contains (@class, 'fitter')] [i] "' – kanghj91

Verwandte Themen