2016-03-15 5 views
11

Ich versuche mit nightwatch.js eine Option aus einer Auswahlbox auszuwählen.Nightwatch zur Auswahl der Option aus der Auswahlbox

Ich habe den Code:

this.browser.click('select[name="month"]') 
     .pause(1000) 
     .click('option[value="3"]') 
     .click('select[name="day"]') 
     .pause(1000) 
     .click('option[value="6"]') 
     .click('select[name="year"]') 
     .pause(1000) 
     .click('option[value="1989"]'); 

Er wählt den richtigen Monat, Jahr auf der Seite aber nicht den Tag. Hier ist der HTML-Code für das Auswahlfeld für den Tag:

<select aria-label="Day" id="day" name="day" data-validatorGroup="bday" data-component="selectbox"> 
    <option selected="selected" value="" aria-label="Date of birth"> 
     Day</option> 
    <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
      <option value="4">4</option> 
      <option value="5">5</option> 
      <option value="6">6</option> 
      <option value="7">7</option> 
      <option value="8">8</option> 
      <option value="9">9</option> 
      <option value="10">10</option> 
      <option value="11">11</option> 
      <option value="12">12</option> 
      <option value="13">13</option> 
      <option value="14">14</option> 
      <option value="15">15</option> 
      <option value="16">16</option> 
      <option value="17">17</option> 
      <option value="18">18</option> 
      <option value="19">19</option> 
      <option value="20">20</option> 
      <option value="21">21</option> 
      <option value="22">22</option> 
      <option value="23">23</option> 
      <option value="24">24</option> 
      <option value="25">25</option> 
      <option value="26">26</option> 
      <option value="27">27</option> 
      <option value="28">28</option> 
      <option value="29">29</option> 
      <option value="30">30</option> 
      <option value="31">31</option> 
     </select> 

Weiß jemand, warum es ist nicht der richtige Tag der Auswahl?

+0

Mögt ihr alle HTML-Code teilen können dort mit dem gleichen Namen ein anderes wählen ist, kann nicht sicher sein; – itzmukeshy7

+0

Meine Antwort kann Ihnen helfen http://stackoverflow.com/questions/37112583/cannot-locate-element-using-recursion-after-it-found-it-as-visible/37129429#37129429 –

Antwort

21

Nach this post, das funktioniert:

.click('#myselectbox option[value=somevalue]') 
+0

wie würden Sie das draußen tun von NW in Vanille js? – SuperUberDuper

+0

thx, Ich erhalte die Auswahländerung mit dem Änderungsereignis, aber das Ereignis zeigt nicht an, welche Option ausgewählt ist. Ich denke, ich muss die Auswahl nachfragen? – SuperUberDuper

+0

** document.querySelector ("# myselectbox option [wert = somevalue]"). Click() ** ändert den Wert der ausgewählten Option in der Benutzeroberfläche nicht. – SuperUberDuper

8

Die folgende Syntax scheint zuverlässiger zu sein:

.click('select[id="myselectbox"] option[value="somevalue"]') 
+0

Bitte geben Sie Erklärungen für Down-Stimmen, ich möchte mehr erfahren. Cees Timmermans Antwort sieht gut aus, funktioniert aber nicht für mich. – 79E09796

2

Wenn Sie mit Seite Objekt tun möchten, können Sie Rückruf verwenden.

sectionInfo.click("@selectOwner",()=>{ 
    sectionInfo.click("option[value='owner']"); 
}); 
4

Sie können Folgendes versuchen, es funktioniert für mich.

<option value="2">2</option> 
... 
.setValue('select[id="day"]','2') 

wenn Sie anderen Wert als der Text in Ihrer Option

z.B. <option value="123">abc</option>

Sie tun .setValue ('select[id="yourselectid"]','abc')

Verwandte Themen