Почему сохранение скриншота иногда блокируется на неопределенный срок в Selenium + безголовый Chrome + Python 2.7? - PullRequest
0 голосов
/ 13 сентября 2018

В моем коде я сохраняю скриншот до отправки формы через element.submit() и после.У меня также есть регистрация вокруг звонка на webdriver.save_screenshot().Я вижу, что иногда сохранение снимка экрана блокирует процесс до тех пор, пока я не уничтожу процессы chromedriver и / или Chrome.

Блокировка Chrome этого снимка экрана происходит на обоих Mac OS X и Ubuntu 16.04 Сервер (AWS EC2).Мне удалось воспроизвести это только на без головы Chrome на Mac.

Есть какие-нибудь мысли или предложения о том, почему это может произойти?Мое предположение на данный момент таково, что это связано с element.submit(), потому что я еще не видел, чтобы это произошло, за исключением (немедленно) после этого вызова.

1 Ответ

0 голосов
/ 18 сентября 2018

Это не идеальное решение, но чтобы не блокировать бесконечно, я подключился к модулю threading в Python, чтобы сделать снимок экрана следующим образом:

import threading
t = threading.Thread(target=webdriver.get_screenshot_as_file, args=[fn])
t.start()
t.join(10)
assert not t.isAlive(), "Screenshot failed"

Если возникает исключение, то явыйти или завершить процесс браузера, в результате чего поток также исчезнет.

...