Перейти к содержимому

Фотография

Случайная ошибка при клике


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Koza_travel

Koza_travel

    Новый участник

  • Members
  • Pip
  • 1 сообщений

Отправлено 04 апреля 2020 - 08:39

Добрый день. Осваиваю Selenium. Возможно ответ очень простой, но для меня пока он не очевиден)

 

Простейшая последовательность действий - открыть сайт, залогиниться, проверить, что залогинился правильно (верный никнейм, верный магазин из списка выбран в аккаунте), разлогиниться. Затем проверка разлогинивания. Если не разлогинился - тест падает. В итоге имеем бессистемные падения. 

 

Эл-т для клика находится без проблем и кликается(хотя пробовал разные локаторы, но это ни чего не дало).  Тест падает не из-за этого. А из-за того, что клик не даёт результата. Руками баг не воспроизводится.

 

Пробовал вручную ставить паузу перед поиском и кликом кнопки разлогинивания(именно паузу в работе т.к. эл-т находится). И запускать 30 одинаковых тестов

результат такой:

1) без паузы - 3 теста отработали хорошо, 1 тест - не нашёл эл-т, 26 тестов - не разлогинились;

2) пауза 10 сек - 22 теста отработали хорошо, 8 не разлогинились;

3) пауза 20 сек - 29 корректно 1 упал с ошибкой element is not attached to the page document.

 

На кнопку повешен скрипт. Я так понимаю, что скрипты не догружаются?

 

в HTML кнопка схематично выглядит так:

<div>

 <div>

  <a href="JS">Выход</a>

 </div>

</div>

 

Как будет лучше взаимодействовать с этим элементов? Как-то проверить загрузку скриптов? Или ещё каким-то образом?

 

 

И ещё немного глупый вопрос) Когда запущены тесты на основной машине (не в виртуалке) использовать компьютер нельзя?Например на другом мониторе открыт другой браузер? Из-за этого тесты тоже могут фейлиться? Или селениум так имулирует действия, что они не привязаны к действиям реальной мыши/клавиатуры? 


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 04 апреля 2020 - 09:45

Бывает так, что по элементу лучше кликнуть через скрипт.

Вы сказали что элемент нашли, теперь кликните по нему:

        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("arguments[0].click()", element);        


  • 0

#3 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 04 апреля 2020 - 18:03

Очень похоже, что авторизация/разлогинивание сделаны через Ajax, в результате нет обновления страницы, из-за чего Selenium может некорректно срабатывать. Ошибка "element is not attached to the page document" как раз говорит в сторону этого. Попробуйте поискать в поисковике запрос по данной ошибке, увидите, что нужно играть с ожиданиями/состояниями элемента. Что к слову, не так то и просто.


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных