Нажмите на кнопку в модальном окне - транспортир

Я пишу тесты транспортира для существующего приложения. У меня есть кнопка "Отклонить" в модальном окне, и я пытаюсь нажать на нее, используя:

element(by.buttonText('Decline')).click();

Но я получаю следующую ошибку:

UnknownError: unknown error: Element is not clickable at point (,). Other element would receive the click:

Может быть потому, что у меня есть другая кнопка под названием "Отклонить" за пределами модального окна?

Как я могу нажать на кнопку отклонения модального окна?

Обнаружил, что это код js, который отображает эту кнопку отклонения.

.....
var content = {
          title: 'Decline',
          htmlBody: '<p>...</p> ',
          okButton: 'Decline',
          onOk: function() {
.....

5 ответов

Решение

Мой коллега рекомендовал это, и это сработало:

Нажатие на кнопку первого отклонения открывает модальное,

Спи какое-то время,

Теперь нажмите на вторую кнопку "Отклонить".

element(by.buttonText('Decline')).click();
browser.sleep(2000);
element(by.cssContainingText('.btn', 'Decline')).click();

Спасибо за вашу помощь:)

Так как есть две кнопки с текстом "Отклонить", как мы можем идентифицировать одну в модальной?

Один из подходов к этому - улучшить ваш локатор для работы в области модального контента. Но, поскольку вы не предоставили модальное представление в формате HTML, я не могу дать вам конкретного ответа. Вот примеры, которые вы можете улучшить в соответствии с вашим вариантом использования:

element(by.css(".modalContent button[ng-click*=ok]")).click();
element(by.css(".modalContent")).element(by.buttonText("Decline")).click();

Другой подход может заключаться в том, чтобы найти все кнопки с определенным текстом и отфильтровать видимую:

element.all(by.buttonText("Decline")).filter(function (button) {
    return button.isDisplayed().then(function (isDisplayed) {
        return isDisplayed;
    });
}).first().click();

Просто найдите кнопку по ее тексту и используйте функцию click, Так что для вас это должно выглядеть так:

element(by.buttonText('Cancel')).click();

Напишите код, который должен отображаться в модальном окне внутри тега формы. И сериализовать эту форму с существующей формой.

Попробуйте следующий код,

var DeclineBtn = element(by.buttonText('Decline'));
browser.executeScript("arguments[0].click()",DeclineBtn.getWebElement())
Другие вопросы по тегам