wake-up-neo.com

So erhalten Sie den nativen Logger in Selenium WebDriver

Ist es möglich, den Logger irgendwie zu beziehen, den Selenium WebDriver verwendet? Ich möchte eine Abschrift aller Befehle erstellen, die ausgegeben wurden (z. B. Öffnen, Warten, Klicken usw.). Insbesondere suche ich nach einer Java-Lösung, da ich die Tests in junit exportiere.

Ich habe diesen Code auf ihrer Website gefunden, zeigt jedoch nichts Standardmäßig an

    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

Aktivieren Sie die Protokollierung in dem von Ihnen verwendeten Treiber, und wählen Sie die Protokolltypen aus, an denen Sie interessiert sind, sowie den Protokollierungsgrad (Ich verwende FirefoxDriver, alle Protokolltypen aktivieren und alle Protokollnachrichten sammeln).

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

Nachdem Sie den Test ausgeführt haben, können Sie die Protokolle sammeln (ich sammle nur die DRIVER-Protokolle, aber Sie können dasselbe für jeden Protokolltyp tun).

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

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

Versuchen

driver.manage().logs()

Sie erhalten eine Protokollschnittstelle mit Methoden zum Abrufen von Protokollen und Protokolltypen. Siehe Logs-Schnittstellendokumente

3
Nikolay

Versuche dies - 

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

Referenz - Selen-Unit-Tests in Python - wo ist meine Protokolldatei?

0
Thirumal

Ich verwende log4j für die Protokollierung, da utils logger das einfachste und direkteste ist, das verwendet werden kann (IMHO).

POM-Abhängigkeiten:

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

importe sind folgende:

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

verwendungszweck:

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

und dann einfach als solches verwenden:

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

Hoffe, das funktioniert für dich.

0