Selenide. Не работает click() при запуске теста

Добрый день!
Есть кнопка

<div class="button button--lg button--primary" tabindex="0">
<span>Пополнить</span></div>

Для нажатия на эту кнопку использую btnSubmit.click();

Если запустить в режиме дебага, то все хорошо. Если просто запускаю тест, то клик не отрабатывает. Ошибок нет, просто не срабатывает событие клика. Подскажите в какую сторону копать проблему?

Попробуйте кликнуть на неё через javascript.

Пробовала. Тоже не работает

Тогда, возможно, надо кликать на элемент, что выше по дереву, либо что там ниже (по спану)

Выше пробовала. По спану попробую.
Но у меня сомнения пока, конечно. Ведь клик отрабатывает в режиме дебага :thinking:

UPD не отработало

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

У него есть два состояния:

<div class="button button--lg button--primary" tabindex="0">

И

<div class="button button--lg button--primary button--disabled" tabindex="0">

При запуске теста я добавила вывод в консоль атрибута class. Он был button button--lg button--primary

Попробуйте чисто для пробы перед кликом поставить слип, возможно вы слишком быстро это делаете и сам клик проходит, но не срабатывает. Если это так то нужно смотреть состояние элемента и дожитаться того состояния в котором клик сработает.

А я вот чуть выше приложила состояния. Те их всего 2 я обнаружила. При запуске я вывожу в логи текущее состояние и оно корректно. Ощущение, что кликаем, но промахиваемся будто

Так если button--disabled, то и клик не отработает. А как она становится активной? Может, надо сначала навести на неё курсор?

Там в зависимости от валидации на странице. Вводится сумма платежа и в момент самой валидации, кнопка может стать button--disabled

Но на этот случай я уже навешала

$(By.xpath("//*[@id='primary-controls']/div[contains(@class,'disabled')]")).shouldBe(Condition.disappear);
  • к этому я еще для себя вывожу само значение атрибута class. Он не содержит disabled
    Те все выглядит так, что кнопка доступна.

А если button.shouldBe(enabled).click()?

Либо через такое ожидание: button.shouldNotHave(cssClass("button--disabled")).click()

нет, не работает. А вот если вставить Thread.sleep(3000) тогда работает)

С кнопкой оказалось все хорошо. Просто в момент ввода суммы, пересчитываются данные в калькуляторе и в этот момент клик на кнопку сабмита просто игнорируется :woman_shrugging:
Хотя кнопка выглядит вполне себе кликабельной

1 лайк

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

2 лайка

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

1 лайк