如何查看 "Screenshot: available via screen"?

How do I view the "Screenshot: available via screen"?

我已经从 Python 开始通过 PhantomJS 进行 运行 Selenium 测试。每当测试引发异常时,我都会看到回溯,后面跟着神秘的短语

Screenshot: available via screen

如果能够查看此类屏幕截图就好了,但我不知道它们保存在哪里,也不知道 screen 打算使用什么程序(或其他)。

(我唯一熟悉的"screen"是the terminal multiplexer,就不给截图了)

所以 - "screen" 他们在说什么?如何使用它查看屏幕截图?

运行 try 块中的程序 当错误发生时使用 save_screenshot

截取屏幕截图

例如:

driver = webdriver.PhantomJS()
driver.set_window_size(1920,1080)
try:
    driver.get('http://whatsmyuseragent.com/')

except Exception,e:
    driver.save_screenshot('screenshot.png')

driver.close()

这会给你那一刻的截图 图片将在您的脚本运行时保存

So - what "screen" are they talking about?

我的异常是这样的:

  File "/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
WebDriverException: Message: {"errorMessage":"Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: \"script-src 'self' connect.facebook.net cdn.ravenjs.com www.google-analytics.com banhang.shopee.vn chat.shopee.vn cdn.shopee.vn\".\n","request":{"objectName":"","statusCode":200,"headers":{"Cache":"no-cache","Content-Type":"application/json;charset=UTF-8"}}}
Screenshot: available via screen

看一下行:raise exception_class(message, screen, stacktrace),所以这里的screen表示变量screen:

>>> screen
u'iVBORw0KGgoAAAANSUhEUgAABVYAAAMACAYAAADPPjzCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElE ...'

我不知道如何快速显示屏幕截图,但是 screen 看起来像是可以保存到文件然后查看的图像数据。

我发现我可以使用以下(python3)获取异常返回的实际屏幕截图。

try:
    ...
except ElementNotVisibleException as e:
    with open("imageToSave.png", "wb") as fh:
        fh.write(base64.decodebytes(e.screen.encode()))

driver.save_screenshot() 函数创建新屏幕截图的时间晚于异常发生的时间。