2016-11-09 4 views
1

Я пытаюсь очистить веб-сайт, используя веб-редактор Selenium и Chrome, и все это работало нормально, пока я не переключился на новый Macbook. Внезапно webdriver, похоже, не узнает, когда сайт полностью загружен.Chrome Webdriver создает тайм-аут в Selenium

Сообщение об ошибке выглядит следующим образом

TimeoutException: Сообщение: тайм-аут: не может определить статус загрузки с тайм-аут: Тайм-аут приема сообщения от визуализатора: -0,003
(информация о сессии: хром = 54.0.2840.87) (Информация о Driver: chromedriver = 2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1), платформа = Mac OS X 10.12.1 x86_64)

Мой код выглядит так:

 import os 
     import time 
     from selenium import webdriver 
     driver = webdriver.Chrome(os.path.join(os.getcwd(), 'chromedriver')) 
     driver.get('http://www.clever-tanken.de/') 

ответ

1

Так как ни странно это может показаться, что было связано с языковыми предпочтениями. После того, как я понял, что последнее оставшееся различие между моим старым mac (где код работал нормально), а мой новый mac (на котором был сбой кода) был языковыми предпочтениями, я изменил его на английский. Теперь код работает нормально!

+0

Рад, что вы исправили это! На самом деле это звучит не так уж и странно, и это связано с тем, что «что-то в фоновом режиме не удается соответствующим образом отобразить», описанное в отчетах об ошибках. – jinksPadlock

0

это указывает на некоторые проблемы с сетью. Столкнулся с тем же, когда с одного хоста наш CDN был недоступен, а некоторые файлы не загружались. Матрицы версий Chrome/chromedriver/selenium не помогли. Это было разрешено только с исправлениями для сети

+0

Благодарим вас за ответ, но можете ли вы быть более конкретным в отношении «сетевых проблем»? Трудно найти исправление, если вы просто скажете, что это о сети ... –

+0

мы запускаем тесты от докеров. маршрут с некоторой темы, закрытой в fw. Так что хозяин просто приурочен. Проверьте это с помощью некоторых devtools/fiddler или что-то вроде – dimkin

3

Это известная ошибка в хром-webdriver. Ex1, Ex2

После очень короткого чтения, похоже, что у их разработчиков возникают проблемы с воспроизведением ошибки. @dimkin упомянул CDN как возможную причину ошибки. Похоже, что другие сообщили об ошибке и имеют похожие подозрения, что контент cdn не разрешает DNS должным образом.

Я смог изолировать проблему. В моем случае это происходило только для страниц, ссылающихся на статический файл (изображение в теге HTML для экземпляра http://cdn.local.myproject.net/static/myimage.png) на моем пользовательском локальном домене cdn. Нет, если я использовал относительный путь «/static/myimage.png» или localhost «http://127.0.0.1/static/myimage.png», поэтому я решил, что это проблема DNS .

Мне удалось обойти эту проблему, используя опцию «--dns-prefetch-disable » хром.

Пример:

from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 
chrome_options = Options() 
chrome_options.add_argument("--dns-prefetch-disable") 
driver = webdriver.Chrome(chrome_options=chrome_options) 

Другой обходной путь упоминается выглядит многообещающим. Он ничего не исправить, но может решить проблему. Он перехватывает исключение и просто пытается выполнить обновление:

Вам нужно: from selenium.common.exceptions import TimeoutException

try: 
    webDriver.get(url); 
except TimeoutException as ex: 
    print(ex.Message) 
    webDriver.navigate().refresh() 
+1

Вопрос о коде в желтом мальчике: где вы определяете параметры в шести строках? –

+0

Извините, это произошло из прямой вырезки и вставки из отчета об ошибке. Я скорректировал образец кода, и теперь он должен работать. – jinksPadlock

+0

Хорошо, спасибо. Просто попробовал верхний, но все же я получаю ошибки таймаута. О втором коде: где мне нужно вставить это? Похож на Javascript bc фигурных скобок ... Извините за то, что вы такой начинающий. –

Смежные вопросы