2016-08-11 2 views
1

Ich habe einen Code geschrieben, um ein Element nach ID auszuwählen, aber es wird nicht ausgewählt. Ich denke ID ändert sich jedes Mal.Element kann nicht durch ID ausgewählt werden

Code I

Select Employmenttype = new Select(driver.findElement(By.id("ApplicantCurrentEmploymentAndIncomes_9341d691-b0c9-4d78-aa32-6b68150c42c9__EmploymentType")));  
Employmenttype.selectByValue("10"); 

HTML-Code 1. Mal

<select name="ApplicantCurrentEmploymentAndIncomes[9341d691-b0c9-4d78-aa32-6b68150c42c9].EmploymentType" class="DropDownEmploymentType" id="ApplicantCurrentEmploymentAndIncomes_9341d691-b0c9-4d78-aa32-6b68150c42c9__EmploymentType" style="border: 1px solid rgb(255, 0, 0); border-image: none;" jQuery18305642460436448337="196"><option value="" selected="">- Select -</option> 

Id auf 2. Mal geändert geschrieben haben

<select name="ApplicantCurrentEmploymentAndIncomes[48770411-31e6-4f7f-bff6-08e9ed853194].EmploymentType" class="DropDownEmploymentType" id="ApplicantCurrentEmploymentAndIncomes_48770411-31e6-4f7f-bff6-08e9ed853194__EmploymentType" style="border: 1px solid rgb(255, 0, 0); border-image: none;" jQuery18305642460436448337="196"><option value="" selected="">- Select -</option> 

Kann mir jemand in diesem Fall vorschlagen, wie ich Element auswählen ?

Antwort

2

Sie haben eine dynamische ID.

Select Employmenttype = new Select(driver.findElement(By.xpath(".//select[contains(@id,ApplicantCurrentEmploymentAndIncomes)]")));  
Employmenttype.selectByValue("10"); 

Auf diese Weise, Sie „sagen“, um den Treiber zu finden einen Select Tag Knoten in Ihrem HTML deren id enthält diese besondere: Sie sollten Ihr Element unter Verwendung von XPath, so dass der folgende Code sollte es tun lokalisieren Text.

EDIT: Hinzufügen hier für Sichtbarkeit. Xpath ist ein extrem leistungsfähiges Werkzeug, wenn es sein volles Potential ausnutzt. Sie können weitere Beispiele hier überprüfen: w3schools.com/xsl/xsl_functions.asp

+0

Ich versuchte Ihren Code, es funktioniert gut. Können Sie mir bitte sagen, wie man xpath ähnlich wie oben verwendet, um Text im Textfeld zu senden. Ich habe versucht 'driver.findElement (By.xpath (" // * [contains (@ id, EmploymentStartDate)] ")). SendKeys (EmpDate);' aber es funktioniert nicht. Tatsächlich ändert sich für diese Beschäftigungsseite die ID dynamisch für alle Elemente. können Sie bitte helfen? –

+0

Für den ID-Teil sollten Sie überprüfen, was stabil bleibt (z. B. in Ihrem Fall denke ich, dass es "EmploymentStartDate" ist). Der Name Ihrer ID führt jedoch zu der Annahme, dass es sich um eine Eingabe des Datumsfelds handelt. Vielleicht öffnet es einen Kalender, um das Datum auszuwählen, und auf der Benutzeroberfläche können Sie keinen Wert direkt eingeben Wert ist nicht im richtigen Format. – Cosmin

Verwandte Themen