Я не знаю, почему в 80% случаев тест работает хорошо, и иногда я получаю сообщение об ошибке, что элемент не виден, хотя я использую wait.until....
Это очень странно, кто-нибудь тоже это понимает?
Я не знаю, почему в 80% случаев тест работает хорошо, и иногда я получаю сообщение об ошибке, что элемент не виден, хотя я использую wait.until....
Это очень странно, кто-нибудь тоже это понимает?
Это кошмар любого инженера по автоматизации пользовательского интерфейса.
Хитрость заключается в том, как вы эффективно используете свое ожидание.
Попробуйте использовать явное ожидание и используйте в нем параметр ожидания для элемента.
Также попробуйте использовать JAVASCRIPT/jQuery click.. это будет работать, даже если ваш элемент не виден.. Но элемент должен присутствовать..
Это именно то, чего вы хотите избежать в своих тестах, чтобы они вызывали доверие.
Это вовсе не странно, просто классический пример состояния гонки между тестовым веб-сайтом сервер и клиентский браузер, с одной стороны, и очень быстрая программа автоматизированного тестирования, с другой, которая имеет ожидания, но работает намного быстрее, чем человек. Каждый видел это в какой-то момент.
Вот хороший набор примеров, которые помогут вам внедрить ожидание в Selenium. код без ненужных задержек, которые могут значительно замедлить ваши тесты.
Просто для понимания: иногда полезно использовать разные подходы, то есть тест действует не на 100% так, как действовал бы пользователь.
Иногда мне помогало простое обновление (даже второй раз) страницы и ожидание загрузки всех необходимых элементов.
Если программное обеспечение было только что развернуто, веб-серверы нуждаются в реорганизации и требуют больше времени для ответа, поэтому вы можете увеличить время ожидания для Selenium.
Другая проблема, например. навигация при использовании плавающих меню может быть решена с помощью прямой навигации по URL-адресу, что не является обычным явлением, но любой пользователь может сделать это.
Иногда мне помогало возвращение фокуса в текущее окно:
Browser.WebDriver.SwitchTo().Window(Browser.WebDriver.CurrentWindowHandle);