2016-04-21 7 views
0

Ich mag ein einfaches Skript machen, die ein E-Mail-Konto bei der URL erstellen werden: https://service.mail.com/registration.htmlWie kann Selen Elemente mit unterschiedlicher ID finden?

Jedes Mal, wenn ich die Seite neu zu laden, die Eingabetextfelder haben eine andere ID. Wie finde ich diese Elemente zuverlässig? Warum sollte jemand die ID ständig ändern wollen?

Beispiel:

<input class="Text ColouredFocus" type="text" value="" name="z1085243925" id="id11b" maxlength="30" onchange="var wcall=wicketAjaxPost('?wicket:interface=:4:FormRegistration:ListRegistrationData:0:ItemRegistrationData:BorderBoxRegistrationData:PanelRegistrationData:Row1:Field::IBehaviorListener:1:', wicketSerialize(Wicket.$('id11b')),function() { }.bind(this),function() { }.bind(this), function() {return Wicket.$('id11b') != null;}.bind(this));" tabindex="1"> 

Dank!

Antwort

1

Sie müssen nicht immer id oder name Attribute verwenden. Es gibt eine enorme Menge an Techniken und Standortstrategien. Manchmal ist es nicht so trivial, wie es scheint.

Zum Beispiel würde in diesem Fall, aus meiner Sicht, eine lesbare und zuverlässige Möglichkeit, die Eingabefelder zu finden, auf den Klassennamen der li Eltern beruhen. Beispiel für den Nachnamen:

driver.findElement(By.cssSelector(".userdata-lastname input")); 
+0

Ist das auch okay? \t @FindBy (how = How.CSS, mit = ".userdata-lastname Eingabe") \t WebElement firstNameInput; – HelloWorldNoMore

+0

@HelloWorldNoMore fast wäre der Selektor für den ersten Namen ".userdata-firstname input". – alecxe

+0

es sieht aus wie Platz ist vor der Eingabe so '.' ist nicht nötig? wie .userdata-lastname.input –

Verwandte Themen