Можно ли нажать кнопку на модале с селеном?
Я пытаюсь использовать chimpjs с огурцом и селеном для автоматизации входа, но в настоящее время мы выполняем вход через модальный режим. И в настоящее время все попытки щелкнуть по кнопке входа в систему этого модального режима приводят к одной и той же ошибке:
Error: unknown error: Element is not clickable at point (764, 42). Other element would receive the click: <div class="login-overlay " style="display: block; opacity: 0.969096;">...</div>
Вот шаги, которые я предпринимаю для селена. Я жду, пока модал появится, прежде чем вводить имя пользователя или пароль, но когда я пытаюсь нажать кнопку входа в систему, у меня ничего не получается.
module.exports = function() {
this.Given(/^I am on the website homepage$/, function () {
client.url('example.com');
});
this.When(/^I click the login button$/, function () {
client.click('.navbar__link--login');
});
this.Then(/^I see the login screen$/, function () {
client.waitForExist('.login-overlay');
});
this.Then(/^I enter my username in the email field$/, function () {
client.setValue('#username', 'myemail@email.com');
});
this.Then(/^I enter my password in the password field$/, function () {
client.setValue('#password', 'myemail@email.com');
});
this.Then(/^And I click the login button$/, function () {
client.click('.login-btn');
});
};
В настоящее время все проходит, кроме последнего шага. Это потому, что мы используем модал для входа в систему? Или есть способ нажать на кнопки на модалы в селене? Или я пропускаю действительно очевидный шаг?
Решение: я нашел решение для этого, я не смог нажать на элемент, однако я смог сделать отправку формы через client.submitForm(selector)
вариант. Выполнение этого, казалось, решило проблему, и я смог пройти последний шаг. Я также изменил последний шаг, чтобы сказать "И я отправляю форму входа" для удобства чтения. Вы можете увидеть больше на странице отправки формы здесь: http://webdriver.io/api/action/submitForm.html
1 ответ
Звучит так, как будто над элементом управления есть элемент "наложение входа".
В качестве обходного пути сделайте его невидимым:
client.execute("arguments[0].style.display = 'none';", client.element('.login-btn'));
Не испытано.