python - 尝试制作屏幕截图时如何修复python-selenium崩溃?
问题描述
使用 selenium 4.0.0 for python,我收到一个错误
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 中运行时才会发生。但它总是在制作屏幕截图时发生。
也许还有另一种制作屏幕截图的方法?
解决方案
我的问题没有答案,但我创建了一个似乎可行的解决方法。
我正在创建一个硒驱动程序,而那个驱动程序正在打开不同的页面。在这里我得到了错误。
# 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
推荐阅读
- regex - 检查有效的部分散列字符串
- php - 如何组合这两个数组?
- python - 在页面加载中设置 pyqt5 上的表值会引发 AttributeError
- c++ - 前向声明带有派生类模板参数的函数
- java - JSON 对象到 BODY 发布者
- javascript - 获取输入框的值并将其放入“let”变量中
- python - 我的随机替换系统替换了错误的项目
- php - 将特定的 XML 转换为 PHP 数组
- excel - VBA CODE RUNTIME ERROR 1004 表示对象定义错误
- java - 在 Cassandra 中使用 sstabledump 时 /tmp 挂载为 noexec 时出现 java.lang.UnsatisfiedLinkError