Nightwatch从选择框中选择选项

时间:2016-03-15 19:44:32

标签: javascript jquery nightwatch.js

我正在尝试使用nightwatch.js从选择框中选择一个选项。

我有代码:

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

它在页面上选择正确的月份,但不是当天。这是当天选择框的HTML:

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

有谁知道为什么没有选择正确的日子?

5 个答案:

答案 0 :(得分:24)

根据this post,这有效:

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

答案 1 :(得分:12)

以下语法似乎更可靠:

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

答案 2 :(得分:7)

您可以尝试以下操作,它适用于我。

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

如果您的值与您选项中的文字不同

e.g。 <option value="123">abc</option>

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

答案 3 :(得分:5)

如果您想使用Page Object,则必须使用回调。

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

答案 4 :(得分:3)

.click("#selectid option:nth-child(1)")

这也可以使用类标识符 -

e.g。

.click(".selectclass option:nth-child(1)")

将nth-child设置为1将选择下拉列表中的第一项。

设置为2将选择第二个值等等。

希望这对那些对之前提出的解决方案没有运气的人有所帮助。