У меня есть тест nightwatch, который выглядит так, где я пытаюсь подтвердить, что щелчок функции преобразования пароля в текст на моей странице входа в систему работает:
'Test Password Visible': function (client) {
client
.url('http://127.0.0.1:8000/test')
.waitForElementVisible('body', 1000)
.assert.visible('#id_password')
.assert.visible('#eye_button')
.pause(1000)
client.assert.attributeEquals("#id_password", "type", "password");
client.execute(function () {
document.querySelector('#eye_button').click()
console.log('clicked')
}, []);
client.assert.attributeEquals("#id_password", "type", "text");
},
#eye_button
- это div
, содержащий элемент <i>
, управляемый JS, показывающий, является ли поле пароля type=text
или type=password
Я новичок в Nightwatch, но, глядя на другие сообщения, это должно было позволить щелкнуть div, обратите внимание, что метод .click()
не работал из-за того, что элемент не был интерактивным.
client.execute(function () {
document.querySelector('#eye_button').click()
console.log('clicked')
}, []);
Однако это не так, и я даже не получаю console.log при запуске теста. Может ли кто-нибудь помочь мне указать правильное направление?
Строка, которая терпит неудачу, находится здесь, потому что (я предполагаю), что div не нажимается, и JS, который преобразует поле пароля, не вызывается:
client.assert.attributeEquals("#id_password", "type", "text");