为什么保存屏幕截图有时会在Selenium +无头Chrome + Python 2.7中被无限期阻止?

时间:2018-09-13 15:26:19

标签: python selenium google-chrome-headless

在我的代码中,在通过element.submit()提交表单之前和之后,我保存了屏幕截图。我还记录了对webdriver.save_screenshot()的调用。我看到的是有时保存屏幕快照会阻塞该过程,直到我杀死chromedriver和/或Chrome进程为止。

此屏幕截图锁定了Chrome,同时在 Mac OS X Ubuntu 16.04 服务器(AWS EC2)上进行。我只能在Mac上的 headless Chrome上进行复制。

关于为什么会发生这种情况的任何想法或建议?这时我的猜测element.submit()有关,因为除了调用之后(立即),我还没有看到这种情况。

1 个答案:

答案 0 :(得分:0)

This isn't an ideal solution but in order to keep from blocking indefinitely I've tapped into Python's threading module to take a screenshot like so:

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

If an exception occurs then I quit or terminate the browser process which results in the thread dying off as well.