Пока мой Google Chrome не был обновлен до версии 78, мой код работал нормально. Я также обновил chromedriver до версии 78.0.3904.70. Поэтому я больше не могу найти WebElement с id = 'plugin', используя Selenium WebDriver и Java:
<html>
<div id="content">
<embed id="plugin" type="application/x-google-chrome-pdf" src="http://??????????/offer_printed.php?printable=yes&reanudar=&>
</div>
</html>
Кроме этой части мои тесты работают нормально. У меня никогда не было подобной проблемы раньше. Я также пытался найти WebElement id = 'content', но получаю ту же ошибку.
WebDriverWait wait = new WebDriverWait (driver, 90);
WebElement scrollvalid = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("plugin")));
scrollvalid.sendKeys(Keys.PAGE_DOWN); scrollvalid.sendKeys(Keys.PAGE_DOWN);
Мой скрипт автоматизации должен найти элемент PDF и прокрутить страницу вниз. Вместо этого я получаю эту ошибку: org.openqa.selenium.TimeoutException: истекло время ожидания через 90 секунд в ожидании видимости элемента, расположенного с помощью By.id: plugin
Кто-нибудь сталкивается с подобной проблемой? Заранее спасибо.
Thread.sleep
в места, где у меня было явное или явное ожидание перед этим обновлением.Ответы:
Я столкнулся с той же проблемой.
Видимо Chrome автоматически обновляется. Вчера (29 октября 19 года) мой ChromeDriver начал жаловаться, что он не совместим с Chrome 78. Я обновил драйвер до версии 78. Я начал получать случайные исключения org.openqa.selenium.NoSuchElementException при попытке найти элементы, которые, как я подтвердил, были там. FindElement [s] также работают, когда я использовал точки останова. Я также пробовал неявное ожидание с ограниченным успехом.
Я пробовал решение ChromeOption от Zsbappa, но без радости.
Google затрудняет получение старых версий Chrome, но я нашел версию 76 по адресу https://www.neowin.net/news/google-chrome-76-offline-installer/ . Осторожно, онлайн-установщик устанавливает последнюю версию. Я вернулся к водителю за 76 и все хорошо. Все мои тесты Selenium снова работают.
Мой вывод заключается в том, что Chrome 78 и связанный с ним драйвер находятся в состоянии гонки, когда Selenium пытается запросить веб-страницу до ее завершения.
источник
Мы столкнулись с аналогичной проблемой с Chrome 78.0.3904.7, Chromedriver 77/78, Python Selenium 3.141.0.
В наших автоматических тестах Python Selenium мы наблюдали многочисленные сбои, когда казалось, что щелчки по элементам не происходили. Даже более странно, кажется, что элемент стал активным (как если бы он собирался щелкнуть), но фактическое событие щелчка никогда не происходило. В результате переключение страниц и т. Д. Не происходит, что приводит к различным сбоям в нисходящем направлении.
В процессе поиска ошибок и ошибок мы обнаружили, что использование стандартной функции .click () теперь ненадежно:
Но использование цепочек действий действительно представляется надежным:
Непонятно, почему это так. Сбои начались, как только мы обновились до Chrome 78.0.3904.7. Мы используем Chromedriver 77.0.3865.90, но те же тесты надежно проходят на версиях Chrome 77.x, поэтому кажется, что что-то не так или изменилось в Chrome 78.
источник
Добавив следующий аргумент, я решил свою проблему.
источник
Я столкнулся с той же проблемой, когда пытался получить доступ к вкладке внутри iframe, она работала нормально в версии 76. Теперь, когда она обновилась до 78, происходит сбой. Попробовал ожидания, неявное ожидание, сон, поиск элементов с помощью xpath, CSS, id, переключение контекста, прокрутка до просмотра и т. Д., Но безуспешно. Я использую Windows 10, 1809. Я не знаю, происходит ли это в других ОС.
Вот вопрос, который я поднял:
Проблема с использованием локаторов chromedriver 78.0.3904.70
источник
Вчера я подтвердил, что эта проблема проявляется только тогда, когда элемент содержится в iframe. В этих случаях iframe расположен нормально. Однако попытка найти веб-элемент с помощью объектов ожидания драйвера или веб-драйвера приведет к значению
NoSuchElement
илиTimeoutException
соответственно.Я предоставил команде chromedriver подробный журнал драйверов Chrome, и они работают над этим.
ОБНОВЛЕНИЕ : Из выпуска хромодрайвера 3223
По сути, эта ошибка была введена в v.77. Многие из нас только заметили эту проблему, потому что мы обновились с v.76 до .v78. Говорят, что они нацелены на исправление .v80 (не v. 79). В качестве обходного пути я использую время
Thread.sleep
между переключением на iframe и попыткой найти компонент. Этот обходной путь работает отлично. Фактически, вы можете проверить это самостоятельно, просто запустив ваше приложение в режиме отладки. Когда вы приостановите выполнение (используя точку останова), вы заметите, что ваш оригинальный код (без спящего режима) работает нормально.источник
Например: вы можете попробовать использовать это ключевое слово!
источник
Это оказалось проблемой с Google Chrome, а не с chromedriver: https://bugs.chromium.org/p/chromedriver/issues/detail?id=3211
источник
Я была такая же проблема.
После автоматического обновления Chrome до версии 78.0 мои сценарии автоматического тестирования не выполнялись. Поэтому я обновил chromedriver до версии 78, но драйвер так и не смог найти какой-либо веб-элемент. После этого я попытался использовать несколько версий chromedriver и, наконец, моя проблема была решена с помощью chromedriver версии 2.44 .
Эту версию можно найти по адресу https://chromedriver.storage.googleapis.com/index.html?path=2.44/.
источник
Вы можете использовать менеджер пакетов Nuget , удалить диск Chrome и выполнить поиск chrome, загрузить новую версию selenium.web.driver.ChromeDriver >> для jsaKamoto
там вы найдете Chrome версии 78.
источник