ver usar trucos other log f12 errores consola con como chrome abrir c# javascript asp.net-mvc selenium

c# - usar - trucos con la consola de chrome



Obtener el registro de la consola de Chrome (6)

Este es el código c # para registrar el registro del navegador desde Chrome.

private void CheckLogs() { List<LogEntry> logs = Driver.Manage().Logs.GetLog(LogType.Browser).ToList(); foreach (LogEntry log in logs) { Log(log.Message); } }

Aquí está mi código para el registro real:

public void Log(string value, params object[] values) { // allow indenting if (!String.IsNullOrEmpty(value) && value.Length > 0 && value.Substring(0, 1) != "*") { value = " " + value; } // write the log Console.WriteLine(String.Format(value, values)); }

Quiero construir una prueba de automatización, por lo que tengo que saber los errores que aparecen en la consola de Chrome.

¿Hay una opción para obtener las líneas de error que aparecen en la consola?

Para ver la consola: haga clic derecho en algún lugar de la página, haga clic en "elemento de inspección" y luego vaya a "consola".


No sé C # pero aquí está el código de Java que hace el trabajo, espero que puedas traducirlo a C #

import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.logging.LogEntries; import org.openqa.selenium.logging.LogEntry; import org.openqa.selenium.logging.LogType; import org.openqa.selenium.logging.LoggingPreferences; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class ChromeConsoleLogging { private WebDriver driver; @BeforeMethod public void setUp() { System.setProperty("webdriver.chrome.driver", "c://path//to//chromedriver.exe"); DesiredCapabilities caps = DesiredCapabilities.chrome(); LoggingPreferences logPrefs = new LoggingPreferences(); logPrefs.enable(LogType.BROWSER, Level.ALL); caps.setCapability(CapabilityType.LOGGING_PREFS, logPrefs); driver = new ChromeDriver(caps); } @AfterMethod public void tearDown() { driver.quit(); } public void analyzeLog() { LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER); for (LogEntry entry : logEntries) { System.out.println(new Date(entry.getTimestamp()) + " " + entry.getLevel() + " " + entry.getMessage()); //do something useful with the data } } @Test public void testMethod() { driver.get("http://mypage.com"); //do something on page analyzeLog(); } }

Preste atención al método de configuración en el código anterior. Usamos el objeto LoggingPreferences para habilitar el registro. Hay algunos tipos de registros, pero si desea realizar un seguimiento de los errores de la consola, LogType.BROWSER es el que debe usar. Luego pasamos ese objeto a DesiredCapabilities y luego al constructor ChromeDriver y voila - tenemos una instancia de ChromeDriver con el registro habilitado.

Después de realizar algunas acciones en la página, llamamos al método AnalyLog (). Aquí simplemente extraemos el registro e iteramos a través de sus entradas. Aquí puede poner aserciones o hacer cualquier otro informe que desee.

Mi inspiración fue este código de Michael Klepikov que explica cómo extraer registros de rendimiento de ChromeDriver.


Puede obtener registros de esta manera:

Driver().Manage().Logs.GetLog();

Al especificar el registro en el que está interesado, puede obtener el registro del navegador, es decir:

Driver().Manage().Logs.GetLog(LogType.Browser);

También recuerde configurar su controlador en consecuencia:

ChromeOptions options = new ChromeOptions(); options.SetLoggingPreference(LogType.Browser, LogLevel.All); driver = new ChromeDriver("path to driver", options);


Según el problema, el registro 6832 aún no está implementado para los enlaces C #. Por lo tanto, puede que no haya una manera fácil de hacer que esto funcione a partir de ahora.


public void Test_DetectMissingFilesToLoadWebpage() { try { List<LogEntry> logs = driver.Manage().Logs.GetLog(LogType.Browser).ToList(); foreach (LogEntry log in logs) { while(logs.Count > 0) { String logInfo = log.ToString(); if (log.Message.Contains("Failed to load resource: the server responded with a status of 404 (Not Found)")) { Assert.Fail(); } else { Assert.Pass(); } } } } catch (NoSuchElementException e) { test.Fail(e.StackTrace); } }

Podrías hacer algo como esto en C #. Es un caso de prueba completo. Luego imprima la salida de la consola como String, es decir, logInfo en su informe. Por alguna razón, Log (log.Message) de la solución anterior me dio errores de compilación. Por lo tanto, lo reemplacé.