Selenium нажимает на неправильную ссылку (или вообще не нажимает на ссылку) на определенных машинах - PullRequest
8 голосов
/ 24 ноября 2011

Я пользуюсь Selenium WebDriver 2.5.0 (пробовал 2.13.0, не помогло). Я пытаюсь нажать на ссылку, как это:

driver.FindElement(By.PartialLinkText("Customer - Creation").Click();

До того, как это сработало, но я пытался запустить сценарии через 3 недели и Я наблюдаю 3 разных поведения на 3 машинах:

  1. Машина A: по ссылке вообще нет щелчка, также нет ошибки.

  2. Машина B: она нажимает другую ссылку! Иногда вверху, иногда внизу.

  3. Машина C (виртуальная): работает.

Я не полностью проверил это (провел сегодня полдня), но кто-нибудь сталкивался с таким поведением?

Я перезапустил свой компьютер, заново добавил библиотеки Selenium. «SendKeys (Enter)» помогает, но эта проблема возникла не только со ссылками, но и по крайней мере с радиоблоками, где «SendKeys (Enter)» не работает.

Пожалуйста, поделитесь своими мыслями.

Обновление : браузеры одинаковы как минимум на 2 компьютерах, Internet Explorer 8.0

Ответы [ 5 ]

5 голосов
/ 20 декабря 2011

Отвечает nebehr.g ... @ gmail.com at Selenium Issues:

Эта проблема время от времени появляется и обычно возвращается с запросом на разъяснения.Суть в том, что InternetExplorerDriver неправильно вычисляет координаты некоторых объектов и щелкает не в том месте.Одной из причин этого является значение увеличения, отличное от 100%;однако это также воспроизводимо для некоторых элементов управления для увеличения 100%.

Полагаю, было бы полезно, если бы вы могли создать образец страницы для демонстрации этой проблемы.В то же время, почему вы не используете Javascript метод click () для оскорбительных элементов управления?

http://code.google.com/p/selenium/issues/detail?id=3052

3 голосов
/ 12 декабря 2015

Еще одна вещь, которую нужно проверить, - это разрешение экрана (не разрешение рабочего стола, а размер текста и значков на системном уровне). У меня в офисе есть два ноутбука, которые вы использовали для тестирования: один на Windows 7, а другой на Windows 10. На обоих разрешение экрана превышало 100%, и у Selenium возникли проблемы с перемещением мыши в правильное положение для мыши такие события, как щелчок и зависание. Как только разрешение экрана было установлено на 100%, все действия мыши работали правильно.

Windows 7: http://windows.microsoft.com/en-us/windows7/make-the-text-on-your-screen-larger-or-smaller?v=t

Windows 10: https://superuser.com/questions/951199/windows-10-system-font-size-change

1 голос
/ 24 сентября 2015

В ответе Андрея есть много полезной информации, а в выпуске Selenium он упоминает по адресу https://code.google.com/p/selenium/issues/detail?id=3052. Просто чтобы связать все эти данные вместе и предложить успешный обходной путь ...

Я тоже испытываю проблему щелчков, происходящих с неправильными координатами экрана - через четыре года после того, как ОП впервые упомянул об этом! Как говорили другие:

  • Проблема связана с InternetExplorerDriver. У меня проблема при тестировании IE 9, но не Chrome, Firefox или даже IE 8.
  • Как уже упоминалось в выпуске Selenium, на тестируемом веб-сайте используются фреймы.

Я попробовал несколько обходных путей, предложенных в этом и других постах. Все следующее НЕ помогло:

  • Обновление до последней версии InternetExplorerDriver (версия 2.47.0)
  • Развертывание окна браузера.
  • Настройка масштабирования браузера до 100%.
  • Использование цепочки действий, с или без move_by_offset, вместо метода click () WebDriver.

Как подсказал Андрей, в справке DID используется JavaScript вместо метода click () WebDriver. Вот строка кода Python, которая делает свое дело:

driver.execute_script("jQuery('{}').click();".format(css_selector))

Предполагается, что «драйвер» является экземпляром Selenium WebDriver, а «css_selector» - это строка, идентифицирующая элемент, который вы хотите щелкнуть, и загруженный jQuery.

0 голосов
/ 05 октября 2012

У меня только что была такая же проблема в FireFox.Масштаб был на уровне 100%, и выбор по xpath определенно был правильным.Оказалось, что проблема исчезла, когда я развернул окно браузера!

код: (python api)

   self.driver.maximize_window()
0 голосов
/ 25 ноября 2011

Похоже, что элемент отсутствует в HTML-коде страницы, но вместо этого добавляется динамически после загрузки страницы. Что происходит, зависит от того, насколько быстро работает машина и насколько уникален текст. Держу пари, что если вы добавите длительный сон (, например, , минуту), вы получите одинаковый результат на всех 3 машинах. Если это так, то это указывает на единственную наиболее классическую проблему тестирования Selenium - попытки действовать на страницах, которые не являются законченными. Вам нужно найти элемент для ожидания, который будет гарантировать наличие ссылки, по которой вы хотите перейти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...