Me pregunto si watir-webdriver es la capacidad de registrar la salida de cualquier error de la consola. Esto sería equivalente a abrir manualmente la consola en un navegador y observar los errores de JS a medida que se carga la página. ¿Puedo capturar esto a través de watir-webdriver y log/error encendido?¿Puede watir-webdriver capturar errores de consola?
Respuesta
Al utilizar watir-webdriver en combinación con Cucumber, los errores, si los hay, se envían a un archivo html que está muy bien formateado e incluye los errores de watir-webdriver.
Esto se puede lograr mediante la adición de las siguientes banderas a su perfil predeterminado en cucumber.yml:
--color --format pretty --format html -o results.html
Más información sobre este archivo here. He aquí algunos background on Cucumber.
Sin embargo, si usted está usando solamente Watir-WebDriver desde la consola, puede redirigir los errores Watir-WebDriver a un archivo de la siguiente manera:
$ ruby your_watir_script.rb 2> watir_debug.log #watir outputs errors as stderr
En la mayoría de los casos, si algo en watir falla (p. ej., no se puede encontrar un elemento) y luego todo lo demás también fallará, por lo que es útil tener algo como Cucumber para impulsar tu automatización según el escenario.
Si va a ser útil a alguien - esta solución debería funcionar:
def check_console_log
console_log = @browser.driver.manage.logs.get(:browser)
if console_log != nil
raise(console_log)
end
end
¿Estás seguro de que es así? No veo 'get_log' en la documentación? –
Algo seguro. Por ahora estoy usando esta funcionalidad en mi proyecto, después del paso fallido estoy verificando el registro de la consola y escribiendo el archivo de registro. Este método se describe en _module Selenium_ _module WebDriver_ _module Remote_ 'def getlog (tipo) datos = ejecutar: getlog, {},: type => tipo.to_s Matriz (datos) .map do | l | LogEntry.new l.fetch ('nivel'), l.fetch ('timestamp'), l.fetch ('mensaje') end end' – Kirikami
basé mi solución en Kirikami's answer, sin pepino necesario. Este enfoque solo imprime la consola de JavaScript Errors
(sin advertencias, información, registros o depuración).
def print_js_errors
log = @browser.driver.manage.logs.get(:browser)
errors = log.select{ |entry| entry.level.eql? 'SEVERE' }
if errors.count > 0
javascript_errors = errors.map(&:message).join("\n")
raise javascript_errors
end
end
Entonces, si usted está utilizando rspec, usted puede hacer esto:
RSpec.configure do |config|
config.after :each do
print_js_errors
end
end
Pros:
- Seguirá disfrutando de la salida normal de RSpec para las pruebas que
Pass
- Usted todavía recibe los mensajes de error lanzados por watir-webdriver para las pruebas que
Fail
(por ejemplo, tiempo de espera, elemento no encontrado, etc.) - Cuando se emite un error de Javascript, que se agrega a la salida de los resultados de pruebas RSpec
Contras:
- Las primeras dos líneas de
print_js_errors
se ejecutan después de cada prueba
- 1. Cómo capturar la salida de consola de un servicio C#?
- 2. WCF/C# No se puede capturar EndpointNotFoundException
- 3. ¿La mejor manera de capturar errores de JavaScript en producción?
- 4. La mejor forma de capturar errores LOAD DATA LOCAL INFILE?
- 5. Capturar excepciones de iframe
- 6. ¿Se puede generar o se puede capturar la pantalla amarilla de la muerte de ASP.NET (YSOD)?
- 7. Mostrar solo errores en la consola de desarrollo de Chrome
- 8. Código de VBscript para capturar stdout, sin mostrar la ventana de la consola
- 9. No se puede leer los errores de JavaScript en la consola de Firebug antes de cargar la página
- 10. ¿Puede Apache httpd crear errores de registro en la consola en lugar de archivos de registro en Windows?
- 11. ¿Cómo se puede capturar un evento de pegar contentEditable?
- 12. Problema de codificación al capturar la salida de la aplicación de consola en una prueba
- 13. Uso de ncurses para capturar clics del mouse en una aplicación de consola
- 14. Cómo capturar stdout/stderr con googletest?
- 15. ¿Cómo puedo capturar errores de validación en un nuevo Backbone.Model durante la creación de instancias?
- 16. No se puede capturar la excepción C++ utilizando catch (...)
- 17. ¿Se puede capturar una excepción nativa en el código C#?
- 18. ¿Por qué no se puede capturar la excepción interna?
- 19. JavaScript no puede capturar la combinación "SHIFT + TAB"
- 20. Método para capturar una captura de pantalla del navegador del usuario para ayudar a informar errores
- 21. SQL Server ¿Lista de errores?
- 22. ASP clásico: errores de captura
- 23. Capturar contenidos de salida estándar en C#
- 24. Consola de Grails: ¿no se puede encontrar la clase?
- 25. ¿Se puede personalizar la verificación de errores de Pylint?
- 26. Capturar valores de SeekBar
- 27. evitar errores de carga de la imagen que van a la consola de JavaScript
- 28. detectar errores de JavaScript en Chrome
- 29. Registrar todos los errores en la consola o archivo en el sitio de Django
- 30. no puede detectar errores de SQL cuando se utiliza ExecuteNonQuery()
Así que estos Los errores son los errores que el propio watir arroja correctamente? ¿Watir ya captura los errores Javascript de la página y los registra? – negativebase