Nightwatch从选择框中选择选项
我正在尝试使用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:
Day 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
有谁知道为什么它没有选择正确的一天?
根据这篇文章 ,这是有效的:
.click('#myselectbox option[value=somevalue]')
以下语法似乎更可靠:
.click('select[id="myselectbox"] option[value="somevalue"]')
您可以尝试以下方式,它适合我。
... .setValue('select[id="day"]','2')
如果您的值与您选项中的文本不同
例如
你做.setValue ('select[id="yourselectid"]','abc')
如果您想使用Page Object,则必须使用回调。
sectionInfo.click("@selectOwner",()=>{ sectionInfo.click("option[value='owner']"); });
.click("#selectid option:nth-child(1n)")
这也可以使用类标识符 –
例如
.click(".selectclass option:nth-child(1n)")
将nth-child设置为1n将选择下拉列表中的第一个项目。
设置为2n将选择第二个值等。
希望这对那些与之前提出的解决方案没有运气的人有所帮助。
要通过@IceManSpy改进答案:您不需要对页面对象使用回调,这也适用:
pageObject .click('@selectOwner') .click('option[value="owner"]')
或者,如果您想按位置而不是按值选择:
pageObject .click('@selectOwner') .click('option:nth-child(3)')
注意:nth-child(3)
而不是:nth-child(3n)
,因为前者表示“第三选项”,后者表示“每第三个选项”。 有关详细信息,请参阅MDN上nth-child
的文档
(用Nightwatch 0.9.21测试)