2016-03-15 12 views
11

Sto tentando di utilizzare nightwatch.js per selezionare un'opzione da una casella di selezione.Nightwatch per selezionare l'opzione dalla casella di selezione

Ho il codice:

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"]'); 

Seleziona il mese corretto, l'anno sulla pagina, ma non il giorno. Ecco l'HTML per la casella di selezione per il giorno:

<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> 

Qualcuno sa perché non seleziona il giorno corretto?

+0

Possiate condividere tutto il codice HTML può essere c'è un altro selezionare con lo stesso nome potrebbe non essere sicuro; – itzmukeshy7

+0

La mia risposta potrebbe aiutarti http://stackoverflow.com/questions/37112583/cannot-locate-element-using-recursion-after-it-found-it-as-visible/37129429#37129429 –

risposta

21

Secondo this post, questo funziona:

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

come faresti al di fuori di NW in vanilla js? – SuperUberDuper

+0

thx, sto ricevendo la modifica di selezione con l'evento change, ma l'evento non mostra quale opzione è selezionata. Suppongo di aver bisogno di interrogare la selezione dopo? – SuperUberDuper

+0

** document.querySelector ("#opzione myselectbox [valore = somevalue]"). Click() ** non modifica il valore dell'opzione selezionata nell'interfaccia utente. – SuperUberDuper

8

la seguente sintassi sembra essere più affidabile:

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

Si prega di dare spiegazioni per voti bassi, mi piacerebbe saperne di più. La risposta di Cees Timmerman sembra buona ma non funziona per me. – 79E09796

2

Se si vuole fare con Pagina oggetto, è necessario utilizzare callback.

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

Si può provare quanto segue, funziona per me.

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

se avete valore diverso rispetto al testo nella vostra opzione

esempio <option value="123">abc</option>

Tu fai .setValue ('select[id="yourselectid"]','abc')