我使用node.js与守夜。它工作得很好,我唯一的问题是我当前的应用程序需要通过"按"所有的箭头键来测试,并确保元素上的类名发生了变化。我不能让sendKeys函数实际发送按键,这个测试通过了,当它不应该:P。什么好主意吗?
module.exports = {
'chosenTest.html' : function (browser) {
browser
.url(path)
.waitForelementVisible('div[id=columns]', 1000)
.assert.containsText('div[class="choosable chosen"], 'Test 1-0')
.sendKeys('div[id=columns]', ShowText(browser), browser.Keys.DOWN_ARROW)
.assert.containsText('div[class="choosable chosen"]', 'Test 1-0')
.pause(1000)
.end()
}
}
您共享的测试不应该通过。您应该看到一个错误:
✖ ReferenceError: ShowText is not defined
除非你在代码中定义了ShowText
…?
你期望ShowText(browser)
做什么?
试题:
.sendKeys('div[id=columns]', browser.Keys.DOWN_ARROW)
或者,如果你只想在一般的窗口上下文中发送按键:
.keys(browser.Keys.DOWN_ARROW)
工作例:
.sendKeys('div[id=container]', browser.Keys.DOWN_ARROW)
注:sendKeys
是setValue
的别名参考:/lib/api/element-commands.js#L385,所以它接受相同的参数
你可以尝试下面的方法在nightwatch.js中按任何键,我按T,它工作得很好!!
client.keys("t", function(done) {
client.pause(5000);
client.expect.element('#carousel_container').to.have.css('display').which.equals('block');
});
我们使用上面的方法,因为nightwatch.js的键在它的数组中没有任何字母命令,我已经控制了,我没有找到任何字母来按它。
Keys:
{ NULL: '',
CANCEL: '',
HELP: '',
BACK_SPACE: '',
TAB: '',
CLEAR: '',
RETURN: '',
ENTER: '',
SHIFT: '',
CONTROL: '',
ALT: '',
PAUSE: '',
ESCAPE: '',
SPACE: '',
PAGEUP: '',
PAGEDOWN: '',
END: '',
HOME: '',
LEFT_ARROW: '',
UP_ARROW: '',
RIGHT_ARROW: '',
DOWN_ARROW: '',
ARROW_LEFT: '',
ARROW_UP: '',
ARROW_RIGHT: '',
ARROW_DOWN: '',
INSERT: '',
DELETE: '',
SEMICOLON: '',
EQUALS: '',
NUMPAD0: '',
NUMPAD1: '',
NUMPAD2: '',
NUMPAD3: '',
NUMPAD4: '',
NUMPAD5: '',
NUMPAD6: '',
NUMPAD7: '',
NUMPAD8: '',
NUMPAD9: '',
MULTIPLY: '',
ADD: '',
SEPARATOR: '',
SUBTRACT: '',
DECIMAL: '',
DIVIDE: '',
F1: '',
F2: '',
F3: '',
F4: '',
F5: '',
F6: '',
F7: '',
F8: '',
F9: '',
F10: '',
F11: '',
F12: '',
COMMAND: '',
META: ''
},
您可以轻松地按上述数组中的任何键,如"client.keys(client.keys . enter);"