2015-02-11 3 views
7

У меня есть длинное приложение python, которое будет периодически (каждые 30-60 секунд) открывать веб-страницу с помощью драйвера selenium и chrome, запускать javascript и делать снимок экрана. Его запуск на экземпляре EC2 ubuntu с хром в Xvfb и по большей части все работает, за исключением прерывистой программы. Это происходит на одной из этих линий:Selenium Chromedriver Hangs?

options = Options() 
    options.add_argument("--disable-web-security") 
    options.add_argument("--webdriver-logfile=webdrive.log") 
    dc = DesiredCapabilities.CHROME 
    dc['loggingPrefs'] = {'browser': 'ALL'} 
    driver = webdriver.Chrome(chrome_options=options, desired_capabilities=dc) 
    driver.get(url); 

(у меня нет точной линии, но я знаю от отладки заявления я поставивший в том, что он находится где-то между здесь)

К сожалению, программа не падает, поэтому у нее нет сообщений об ошибках, ее просто бесконечно ждут с 7 вечера прошлой ночью. Запуск strace -p 'python program pid' возвращается: wait4(-1, и работает strace -p 'chromedriver pid' возвращается recvfrom(20,

я могу видеть в ps axjf, что процесс все еще работает, его просто ничего не делает. Я как бы теряю то, что сейчас делать, любые предложения?

версия

chromedriver: 2.10.267518

Google Chrome 40.0.2214.111

Селена (устанавливаются с пипом): 2.42.1

#https://github.com/cgoldberg/xvfbwrapper 
xvfb = Xvfb(width=1920, height=1920) 
xvfb.start() 

---- EDIT ----

Я только что обновил до ChromeDriver 2.14.313457 и Selenium 2.44.0, надеюсь, это исправит проблему. На данный момент я оставлю это открытым. Спасибо за совет до сих пор ребята!

---- EDIT ----

Так служба еще в конечном итоге висит. Мне интересно, если это потому, что для каждого снимка экрана я закрываю и перезапускаю google-chrome? Возможно, это вызвало утечку памяти? Как я могу диагностировать это?

+1

Он зависает, если параметры хром не указаны? Какие версии селена и хрома вы используете? – alecxe

+0

Также попробуйте добавить сообщения отладочного журнала и посмотреть, на какой строке он висит. Также покажите, как запустить 'xvfb'. Благодарю. – alecxe

+0

см. Мои правки. Я добавлял сообщения отладки за несколько раз, что это произошло, хотя я думаю, что я недостаточно полно. – Trevor

ответ

1

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

6

Я столкнулся с аналогичной проблемой и нашел ответ here и разместил в блоге об этом here. Установка переменной окружения DBUS_SESSION_BUS_ADDRESS =/dev/null работала для меня, не перезапуская Xvfb все время.

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