web-dev-qa-db-fra.com

Obtenir le journal de la console de chrome

Je veux construire un test d'automatisation, donc je dois connaître les erreurs qui apparaissent dans la console de chrome.

il y a une option pour obtenir les lignes d'erreur qui apparaissent dans la console?

Pour voir la console: faites un clic droit quelque part dans la page, cliquez sur "inspecter un élément", puis sélectionnez "console".

20
Alon Shmiel

Je ne connais pas le C # mais voici le code Java qui fait le travail, j'espère que vous pourrez le traduire en 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();
    }
}

Faites attention à la méthode setUp dans le code ci-dessus. Nous utilisons l’objet LoggingPreferences pour activer la journalisation. Il existe quelques types de journaux, mais si vous souhaitez suivre les erreurs de la console, LogType.BROWSER est celui que vous devez utiliser. Nous passons ensuite cet objet à DesiredCapabilities, puis au constructeur de ChromeDriver et le tour est joué - nous avons une instance de ChromeDriver avec la journalisation activée.

Après avoir effectué certaines actions sur la page, nous appelons la méthode analyseLog (). Ici, nous extrayons simplement le journal et parcourons ses entrées. Ici, vous pouvez mettre des assertions ou faire tout autre rapport que vous voulez.

Mon inspiration était ce code de Michael Klepikov qui explique comment extraire les journaux de performances de ChromeDriver.

29
JacekM

Vous pouvez obtenir les journaux de cette façon:

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

En spécifiant le journal qui vous intéresse, vous pouvez obtenir le journal du navigateur, à savoir:

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

Pensez également à configurer votre pilote en conséquence:

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

C'est le code c # pour consigner le journal du ventilateur à partir de chrome. 

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

voici mon code pour le journal actuel:

        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));
    }
3
Beau Bridges

Conformément à numéro 6832 logging n'est pas encore implémenté pour les liaisons C #. Donc, il pourrait ne pas être un moyen facile de faire fonctionner cela dès maintenant.

1
Shouvik Roy
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);
        }
    }

Vous pouvez faire quelque chose comme ça en C #. C'est un cas de test complet. Imprimez ensuite la sortie de la console sous la forme String i.e logInfo dans votre rapport. Pour une raison quelconque, Log (log.Message) de la solution ci-dessus m'a donné des erreurs de construction. Alors, je l'ai remplacé. 

0
Raj K Lama
driver.manage().logs().get("browser")

Obtient tous les journaux imprimés sur la console. J'ai pu obtenir tous les journaux sauf Violations. Veuillez regarder ici Les journaux de la console Chrome n'impriment pas les violations

0
Sangam Shankar