2012-04-12 1 views
0

Ich verwende WebDriver zum Abrufen und automatischen Ausfüllen von Formularen in Firefox auf die folgende Weise.findElementsByTagName mehrerer Tags in der richtigen Reihenfolge auf der HTML-Seite.

FirefoxDriver driver = new FirefoxDriver(); 
List<WebElement> inputElements = driver.findElementsByTagName("input"); 
List<WebElement> selectElements = driver.findElementsByTagName("select"); 
List<WebElement> allElements = new ArrayList<WebElement>(inputElements); 
allElements.addAll(selectElements); 

Wenn ich Zyklus durch die allElements List, habe ich alle ‚Input‘ Elemente zuerst sehen, dann sind alle ‚die Option‘ Elemente. Gibt es eine Möglichkeit, alle diese Elemente in der Reihenfolge abzurufen, in der sie auf der Seite vorkommen? Ich wünsche findElementsByTagName() eine REGEX wie nehmen würde:

driver.findElementsByTagName("(input|select)"); 

Irgendwelche clevere Möglichkeiten, dies zu tun?

Antwort

0

Sie sollten in Verwendung von xPaths aussehen. Sie sollten Ihnen alle Funktionen geben, die Sie benötigen.

+0

Ich habe versucht, xPaths zu vermeiden, weil es so aussieht, als wären sie für wohlgeformte Seiten gedacht, wo die Seiten, die ich zu navigieren versuche, nicht unbedingt gut geformt sind. Liege ich falsch? Ich gebe schnell zu, dass ich erst seit ein paar Wochen mit WebDriver arbeite. – jlarkins

+0

Ich finde sie trotzdem hilfreich. Solange Sie ein stabiles Muster haben, wird es gut funktionieren. – ChrisG

Verwandte Themen