web-dev-qa-db-fra.com

Comment obtenir un logger natif dans Selenium WebDriver

Est-il possible d'obtenir l'enregistreur utilisé par Selenium WebDriver? Je veux capturer une transcription de toutes les commandes qui ont été émises (par exemple: ouvrir, attendre, cliquer, etc.). En particulier, je recherche une solution Java, car j'exporte les tests vers Junit.

J'ai trouvé ce code sur leur site web, mais il n'affiche rien en standard

    DesiredCapabilities caps = DesiredCapabilities.firefox(); 
    LoggingPreferences logs = new LoggingPreferences(); 
    logs.enable(LogType.DRIVER, Level.FINEST); 
    caps.setCapability(CapabilityType.LOGGING_PREFS, logs); 
    driver = new FirefoxDriver(caps);
19
Zombies

Activez la connexion au pilote que vous utilisez, sélectionnez les types de journaux qui vous intéressent et le niveau de journalisation (j'utilise FirefoxDriver pour activer tous les types de journaux et collecter tous les messages de journaux).

LoggingPreferences logs = new LoggingPreferences();
logs.enable(LogType.BROWSER, Level.ALL);
logs.enable(LogType.CLIENT, Level.ALL);
logs.enable(LogType.DRIVER, Level.ALL);
logs.enable(LogType.PERFORMANCE, Level.ALL);
logs.enable(LogType.PROFILER, Level.ALL);
logs.enable(LogType.SERVER, Level.ALL);

DesiredCapabilities desiredCapabilities = DesiredCapabilities.firefox();
desiredCapabilities.setCapability(CapabilityType.LOGGING_PREFS, logs);

WebDriver driver = new FirefoxDriver(desiredCapabilities);

Ensuite, après avoir exécuté le test, vous pouvez collecter les journaux (je ne collecte que les journaux DRIVER, mais vous pouvez faire de même pour tout type de journal)

Logs logs = driver.manage().logs();
LogEntries logEntries = logs.get(LogType.DRIVER);

for (LogEntry logEntry : logEntries) {
    System.out.println(logEntry.getMessage());
}
35
Miguel Ferreira

Essayer

driver.manage().logs()

Vous obtiendrez une interface de journaux qui a des méthodes pour obtenir des journaux et des types de journaux. Voir Journaux de l'interface de documentation

3
Nikolay

Essaye ça - 

import logging
logging.basicConfig(filename = log_filename, level = logging.DEBUG)

Référence - Tests unitaires de sélénium en Python - où est mon fichier journal?

0
Thirumal

J'utilise log4j pour la journalisation car le logger utils est le plus simple et le plus simple à utiliser (à mon humble avis).

Dépendances POM:

<dependency>
          <groupId> org.Apache.cassandra</groupId>
          <artifactId>cassandra-all</artifactId>
          <version>0.8.1</version>
      </dependency>

      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.6.6</version>
      </dependency>
      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>jcl-over-slf4j</artifactId>
          <version>1.6.6</version>
          <scope>runtime</scope>
      </dependency>
      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>jul-to-slf4j</artifactId>
          <version>1.6.6</version>
          <scope>runtime</scope>
      </dependency>
      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>log4j-over-slf4j</artifactId>
          <version>1.6.6</version>
          <scope>runtime</scope>
      </dependency>

les importations sont les suivantes:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

usage:

private static Logger log = LoggerFactory.getLogger(classname.class);

et puis juste l'utiliser comme tel:

logger.info ("butonCLick");
driver.findElement(By.id("blablabla")).click();

J'espère que cela fonctionne pour toi.

0