2016-03-15 23 views
11

Próbuję użyć nightwatch.js, aby wybrać opcję z pola wyboru.Nightwatch, aby wybrać opcję z pola wyboru

mam kod:

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

wybiera poprawną miesiąc, z roku na stronie, ale nie cały dzień. Oto kod HTML pola wyboru na dzień:

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

Czy ktoś wie, dlaczego nie wybiera właściwego dnia?

+0

Obyś udostępnić cały kod html może istnieje inny select o tej samej nazwie nie może być pewny; – itzmukeshy7

+0

Moja odpowiedź może Ci pomóc http://stackoverflow.com/questions/37112583/cannot-locate-element-using-recursion-after-it-found-it-as-visible/37129429#37129429 –

Odpowiedz

21

Według this post to działa:

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

jak zrobiłbyś to na zewnątrz NW w wanilii js? – SuperUberDuper

+0

thx, otrzymuję wybraną zmianę ze zdarzenia zmiany, ale zdarzenie nie pokazuje, która opcja jest wybrana. Chyba muszę zapytać o wybór? – SuperUberDuper

+0

** document.querySelector ("# myselectbox opcja [value = somevalue]"). Click() ** nie zmienia wartości wybranej opcji w interfejsie użytkownika. – SuperUberDuper

8

Poniższa składnia wydaje się być bardziej wiarygodne:

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

Proszę podać wyjaśnienia do głosowania w dół, chciałbym dowiedzieć się więcej. Odpowiedź Ceesa Timmermana wygląda dobrze, ale nie działa dla mnie. – 79E09796

2

Jeśli chcesz zrobić ze strony obiektu, trzeba użyć wywołania zwrotnego.

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

Możesz spróbować następujących rzeczy, to działa dla mnie.

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

jeśli mają inną wartość niż tekst w opcji

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

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

Powiązane problemy