python-2.7 selenium phantomjs screen screenshot

python 2.7 - ¿Cómo veo la "Captura de pantalla: disponible a través de la pantalla"?



python-2.7 selenium (3)

Comencé a ejecutar pruebas de Selenium a través de PhantomJS de Python. Cada vez que una prueba genera una excepción, veo una traza y luego la frase enigmática.

Captura de pantalla: disponible a través de la pantalla

Sería bueno poder ver esas capturas de pantalla, pero no tengo idea de dónde se están guardando, ni qué programa (u otro) se destina a la screen .

(La única "pantalla" con la que estoy familiarizado es el multiplexor de terminal , que no mostrará capturas de pantalla)

Entonces, ¿de qué "pantalla" están hablando? ¿Cómo lo uso para ver las capturas de pantalla?


Entonces, ¿de qué "pantalla" están hablando?

Mi excepción se ve así:

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

Eche un vistazo a la línea: raise exception_class(message, screen, stacktrace) , por lo que la screen aquí significa la screen variable:

>>> screen u''iVBORw0KGgoAAAANSUhEUgAABVYAAAMACAYAAADPPjzCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElE ...''

No conozco una forma rápida de mostrar la captura de pantalla, pero la screen parece a los datos de imagen que puede guardar en un archivo y luego verlo.


Descubrí que puedo obtener la captura de pantalla real devuelta por la excepción utilizando lo siguiente (python3).

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

La función driver.save_screenshot () crea una nueva captura de pantalla en un momento posterior al momento en que se produjo la excepción.


Ejecute el programa en un bloque try y, cuando se produzca el error, tome la captura de pantalla usando save_screenshot

P.ej :

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()

Esto le dará la captura de pantalla durante ese momento. La imagen se guardará en el funcionamiento de su script.