我已经开始通过Python的PhantomJS运行Selenium测试。每当测试引发异常时,我都会看到一个追溯,然后是神秘的短语
屏幕截图:可通过屏幕获取
能够查看此类屏幕截图会很高兴,但我不知道它们的保存位置,以及screen
的目标(或其他)是什么。
(我熟悉的唯一“屏幕”是the terminal multiplexer,它不会显示截图)
那么 - 他们在谈论什么“屏幕”?如何使用它来查看屏幕截图?
答案 0 :(得分:25)
在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()
这将在那一刻为您提供屏幕截图 图像将在脚本的工作中保存
答案 1 :(得分:7)
那么 - "屏幕"他们在谈论什么?
我的例外情况如下:
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
看起来像您可以保存到文件然后查看的图像数据。
答案 2 :(得分:4)
我发现我可以使用以下(python3)获取异常返回的实际屏幕截图。
try:
...
except ElementNotVisibleException as e:
with open("imageToSave.png", "wb") as fh:
fh.write(base64.decodebytes(e.screen.encode()))
driver.save_screenshot()函数会在发生异常的时间后创建新的屏幕截图。