繁体   English   中英

尝试制作屏幕截图时如何修复python-selenium崩溃?

[英]How to fix python-selenium crash when trying to make a screenshot?

在 python 中使用 selenium 4.0.0,我收到一个错误

selenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
  (Session info: headless chrome=94.0.4606.81)

当代码尝试制作屏幕截图时。 回溯是

  ...
  File "/usr/local/lib/python3.8/site-packages/check_pages/page_dom_check.py", line 57, in make_full_screenshot
    img = Image.open(BytesIO((driver.get_screenshot_as_png())))
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 1064, in get_screenshot_as_png
    return base64.b64decode(self.get_screenshot_as_base64().encode('ascii'))
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 1074, in get_screenshot_as_base64
    return self.execute(Command.SCREENSHOT)['value']
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)

我不能发布一个小的可重现代码,因为它只发生在我在 gitlab CI 中运行它时。 但它总是在制作屏幕截图时发生。

也许还有另一种制作屏幕截图的方法?

我没有回答我的问题,但我创建了一个似乎有效的解决方法。

我正在创建一个 selenium 驱动程序,而那个驱动程序正在打开不同的页面。 在这里我得到了错误。

# pseudocode
driver = ...
for check in checks:
    driver.get(url)
    # do other stuff with driver
driver.quit()

要变通解决此问题,请分别为每个页面创建一个新驱动程序。

# pseudocode
for check in checks:
    driver = ...
    driver.get(url)
    # do other stuff with driver
    driver.quit()

这样你甚至可以把驱动程序周围的所有东西放在一个 try-except 循环中再试一次

# pseudocode
for check in checks:
    while ...
        try:
            driver = ...
            driver.get(url)
            # do other stuff with driver
            driver.quit()
        except UselessException:
            pass

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM