Нестабильная видимость элемента с использованием селена

Я не знаю, почему в 80% случаев тест работает хорошо, и иногда я получаю сообщение об ошибке, что элемент не виден, хотя я использую wait.until....

Это очень странно, кто-нибудь тоже это понимает?




Ответы (3)


Это кошмар любого инженера по автоматизации пользовательского интерфейса.

Хитрость заключается в том, как вы эффективно используете свое ожидание.

Попробуйте использовать явное ожидание и используйте в нем параметр ожидания для элемента.

Также попробуйте использовать JAVASCRIPT/jQuery click.. это будет работать, даже если ваш элемент не виден.. Но элемент должен присутствовать..

person sunder kandasamy    schedule 07.02.2016

Это именно то, чего вы хотите избежать в своих тестах, чтобы они вызывали доверие.

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

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

person Andrew Regan    schedule 07.02.2016

Просто для понимания: иногда полезно использовать разные подходы, то есть тест действует не на 100% так, как действовал бы пользователь.

Иногда мне помогало простое обновление (даже второй раз) страницы и ожидание загрузки всех необходимых элементов.

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

Другая проблема, например. навигация при использовании плавающих меню может быть решена с помощью прямой навигации по URL-адресу, что не является обычным явлением, но любой пользователь может сделать это.

Иногда мне помогало возвращение фокуса в текущее окно:

Browser.WebDriver.SwitchTo().Window(Browser.WebDriver.CurrentWindowHandle);
person Marc Sputnik    schedule 09.02.2016
comment
Говорить автоматизированному тестировщику, чтобы он просто обновлял страницу, пока она не заработает, — это действительно плохой совет. Либо программное обеспечение сломано, либо тестирование неправильное, и для тестировщика в этом разница между большой победой и массовым провалом. - person Andrew Regan; 09.02.2016