类org.openqa.selenium.logging.LogEntry源码实例Demo

下面列出了怎么用org.openqa.selenium.logging.LogEntry的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: appiumpro   文件: Edition088_Debugging_Aids.java
@Override
protected void failed(Throwable e, Description desc) {
    // print appium logs
    LogEntries entries = driver.manage().logs().get("server");
    System.out.println("======== APPIUM SERVER LOGS ========");
    for (LogEntry entry : entries) {
        System.out.println(new Date(entry.getTimestamp()) + " " + entry.getMessage());
    }
    System.out.println("================");

    // print source
    System.out.println("======== APP SOURCE ========");
    System.out.println(driver.getPageSource());
    System.out.println("================");

    // save screenshot
    String testName = desc.getMethodName().replaceAll("[^a-zA-Z0-9-_\\.]", "_");
    File screenData = driver.getScreenshotAs(OutputType.FILE);
    try {
        File screenFile = new File(SCREEN_DIR + "/" + testName + ".png");
        FileUtils.copyFile(screenData, screenFile);
        System.out.println("======== SCREENSHOT ========");
        System.out.println(screenFile.getAbsolutePath());
        System.out.println("================");
    } catch (IOException ign) {}
}
 
源代码2 项目: htmlunit   文件: ConsoleTest.java
/**
 * @throws Exception if the test fails
 */
@Test
@BuggyWebDriver
public void assertOnly() throws Exception {
    final String html
        = "<html>\n"
        + "<body>\n"
        + "<script>\n"
        + "  number = 1;\n"
        + "  console.assert(number % 2 === 0);\n"
        + "</script>\n"
        + "</body></html>";

    final WebDriver driver = loadPage2(html);

    final Logs logs = driver.manage().logs();
    final LogEntries logEntries = logs.get(LogType.BROWSER);
    final List<LogEntry> logEntryList = logEntries.getAll();

    assertEquals(1, logEntryList.size());

    final LogEntry logEntry = logEntryList.get(0);
    assertTrue(logEntry.getMessage(), logEntry.getMessage().contains("Assertion failed"));
}
 
源代码3 项目: htmlunit   文件: ConsoleTest.java
/**
 * @throws Exception if the test fails
 */
@Test
@BuggyWebDriver
public void assertString() throws Exception {
    final String html
        = "<html>\n"
        + "<body>\n"
        + "<script>\n"
        + "  number = 1;\n"
        + "  console.assert(number % 2 === 0, 'the # is not even');\n"
        + "</script>\n"
        + "</body></html>";

    final WebDriver driver = loadPage2(html);

    final Logs logs = driver.manage().logs();
    final LogEntries logEntries = logs.get(LogType.BROWSER);
    final List<LogEntry> logEntryList = logEntries.getAll();

    assertEquals(1, logEntryList.size());

    final LogEntry logEntry = logEntryList.get(0);
    assertTrue(logEntry.getMessage(), logEntry.getMessage().contains("Assertion failed: the # is not even"));
}
 
源代码4 项目: htmlunit   文件: ConsoleTest.java
/**
 * @throws Exception if the test fails
 */
@Test
@BuggyWebDriver
public void assertObject() throws Exception {
    final String html
        = "<html>\n"
        + "<body>\n"
        + "<script>\n"
        + "  number = 1;\n"
        + "  console.assert(number % 2 === 0, {number: number, errorMsg: 'the # is not even'});\n"
        + "</script>\n"
        + "</body></html>";

    final WebDriver driver = loadPage2(html);

    final Logs logs = driver.manage().logs();
    final LogEntries logEntries = logs.get(LogType.BROWSER);
    final List<LogEntry> logEntryList = logEntries.getAll();

    assertEquals(1, logEntryList.size());

    final LogEntry logEntry = logEntryList.get(0);
    assertTrue(logEntry.getMessage(), logEntry.getMessage()
            .contains("Assertion failed: ({number: 1.0, errorMsg: \"the # is not even\"})"));
}
 
源代码5 项目: htmlunit   文件: ConsoleTest.java
/**
 * @throws Exception if the test fails
 */
@Test
@BuggyWebDriver
public void assertObjects() throws Exception {
    final String html
        = "<html>\n"
        + "<body>\n"
        + "<script>\n"
        + "  number = 1;\n"
        + "  console.assert(number % 2 === 0, {number: number}, {errorMsg: 'the # is not even'});\n"
        + "</script>\n"
        + "</body></html>";

    final WebDriver driver = loadPage2(html);

    final Logs logs = driver.manage().logs();
    final LogEntries logEntries = logs.get(LogType.BROWSER);
    final List<LogEntry> logEntryList = logEntries.getAll();

    assertEquals(1, logEntryList.size());

    final LogEntry logEntry = logEntryList.get(0);
    assertTrue(logEntry.getMessage(), logEntry.getMessage()
            .contains("Assertion failed: ({number: 1.0}) ({errorMsg: \"the # is not even\"})"));
}
 
源代码6 项目: htmlunit   文件: ConsoleTest.java
/**
 * @throws Exception if the test fails
 */
@Test
@BuggyWebDriver
public void assertParams() throws Exception {
    final String html
        = "<html>\n"
        + "<body>\n"
        + "<script>\n"
        + "  console.assert(false, 'the word is %s', 'foo');\n"
        + "</script>\n"
        + "</body></html>";

    final WebDriver driver = loadPage2(html);

    final Logs logs = driver.manage().logs();
    final LogEntries logEntries = logs.get(LogType.BROWSER);
    final List<LogEntry> logEntryList = logEntries.getAll();

    assertEquals(1, logEntryList.size());

    final LogEntry logEntry = logEntryList.get(0);
    assertTrue(logEntry.getMessage(), logEntry.getMessage()
            .contains("Assertion failed: the word is foo"));
}
 
源代码7 项目: justtestlah   文件: WebDriverServerLogEnricher.java
@SuppressWarnings("squid:S4784")
private void appendWebDriverLog(WebDriver driver) {
  for (String logType : logTypes) {
    for (LogEntry log : driver.manage().logs().get(logType)) {
      DateFormat formatter = new SimpleDateFormat("HH:mm:ss.SSS");
      String message = log.getMessage();
      // filter out messages related to fetching the log
      if (!message.matches(REGEXP_FILTER)) {
        SERVER_LOG
            .atInfo()
            .addArgument(() -> logType)
            .addArgument(() -> formatter.format(log.getTimestamp()))
            .addArgument(() -> log.getMessage())
            .log("{} {} {}");
      }
    }
  }
}
 
源代码8 项目: Selenium-Foundation   文件: JsUtility.java
/**
 * Propagate the specified web driver exception, extracting encoded JavaScript exception if present
 * 
 * @param driver A handle to the currently running Selenium test window.
 * @param exception web driver exception to propagate
 * @return nothing (this method always throws the specified exception)
 * @since 17.4.0 
 */
public static RuntimeException propagate(final WebDriver driver, final WebDriverException exception) {
    Throwable thrown = exception;
    // if exception is a WebDriverException (not a sub-class)
    if (JS_EXCEPTIONS.contains(exception.getClass().getName())) {
        // extract serialized exception object from message
        thrown = extractException(exception, exception.getMessage());
        
        // if driver spec'd and no serialized exception found
        if ((driver != null) && (thrown.equals(exception))) {
            // get browser log entries
            LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER);

            // for each log entry
            for (LogEntry logEntry : logEntries.filter(Level.WARNING)) {
                // extract serialized exception object from message
                thrown = extractException(exception, logEntry.getMessage());
                // done if serialized exception found
                if (!thrown.equals(exception)) break;
            }
        }
    }
    // throw resolved exception as unchecked
    throw UncheckedThrow.throwUnchecked(thrown);
}
 
源代码9 项目: blueocean-plugin   文件: LogEntryLogger.java
private static void recordLogEntry(LogEntry entry) {
    String time;
    String level;
    String text;

    try {
        // handle messages written by @jenkins-cd/js-logging
        Map<String, Object> messageJson = jsonMapper.readValue(entry.getMessage(), typeRef);
        Map<String, Object> message = (Map<String, Object>) messageJson.get("message");
        time = String.valueOf(message.get("timestamp"));
        level = String.valueOf(message.get("level"));
        text = String.valueOf(message.get("text"));
    } catch (IOException e) {
        // handle messages written natively by console.error|warn|log|debug
        time = String.valueOf(entry.getTimestamp());
        level = String.valueOf(entry.getLevel());
        text = entry.getMessage();
    }

    logger.info(String.format("%s - %s - %s", time, level, text));
}
 
@Override
public String getLog( DeviceWebDriver webDriver )
{
    try
       {
           LogEntries logEntries = webDriver.manage().logs().get( LogType.BROWSER );
           if ( logEntries != null )
           {
               StringBuilder logBuilder = new StringBuilder();
               for ( LogEntry logEntry : logEntries )
                   logBuilder.append( dateFormat.format( new Date( logEntry.getTimestamp() ) ) ).append( ": " ).append( logEntry.getMessage() ).append( "\r\n" );

               return logBuilder.toString();
           }
           return null;
       }
       catch ( Exception e )
       {
           log.info( "Could not generate device logs" );
           return null;
       }
    
}
 
@Override
public String getLog( DeviceWebDriver webDriver )
{
    try
    {
        LogEntries logEntries = webDriver.manage().logs().get( LogType.BROWSER );
        if ( logEntries != null )
        {
            StringBuilder logBuilder = new StringBuilder();
            for ( LogEntry logEntry : logEntries )
                logBuilder.append( dateFormat.format( new Date( logEntry.getTimestamp() ) ) ).append( ": " ).append( logEntry.getMessage() ).append( "\r\n" );

            logBuilder.toString();
        }
        return null;
    }
    catch ( Exception e )
    {
        log.info( "Could not generate device logs" );
        return null;
    }
    
}
 
@Override
public String getLog( DeviceWebDriver webDriver )
{
    try
       {
           LogEntries logEntries = webDriver.manage().logs().get( LogType.BROWSER );
           if ( logEntries != null )
           {
               StringBuilder logBuilder = new StringBuilder();
               for ( LogEntry logEntry : logEntries )
                   logBuilder.append( dateFormat.format( new Date( logEntry.getTimestamp() ) ) ).append( ": " ).append( logEntry.getMessage() ).append( "\r\n" );

               logBuilder.toString();
           }
           return null;
       }
       catch ( Exception e )
       {
           log.info( "Could not generate device logs" );
           return null;
       }
    
}
 
源代码13 项目: xframium-java   文件: APPIUMCloudActionProvider.java
@Override
public String getLog( DeviceWebDriver webDriver )
{
    try
       {
           LogEntries logEntries = webDriver.manage().logs().get( "driver" );
           if ( logEntries != null )
           {
               StringBuilder logBuilder = new StringBuilder();
               for ( LogEntry logEntry : logEntries )
                   logBuilder.append( dateFormat.format( new Date( logEntry.getTimestamp() ) ) ).append( ": " ).append( logEntry.getMessage() ).append( "\r\n" );

               logBuilder.toString();
           }
           return null;
       }
       catch ( Exception e )
       {
           log.info( "Could not generate device logs" );
           return null;
       }
    
}
 
源代码14 项目: flow   文件: WebComponentsIT.java
@Test
public void testPolyfillLoaded() {
    open();

    if (BrowserUtil.isIE(getDesiredCapabilities())) {
        // Console logs are not available from IE11
        return;
    }

    LogEntries logs = driver.manage().logs().get("browser");
    if (logs != null) {
        Optional<LogEntry> anyError = StreamSupport
                .stream(logs.spliterator(), true)
                .filter(entry -> entry.getLevel().intValue() > Level.INFO
                        .intValue())
                .filter(entry -> !entry.getMessage()
                        .contains("favicon.ico"))
                .filter(entry -> !entry.getMessage()
                        .contains("sockjs-node"))
                .filter(entry -> !entry.getMessage()
                        .contains("[WDS] Disconnected!"))
                .findAny();
        anyError.ifPresent(entry -> Assert.fail(entry.getMessage()));
    }
}
 
源代码15 项目: flow   文件: DynamicDependencyIT.java
private void testErrorCase(String caseName, String errorMessageSnippet) {
    open();
    if (hasClientUnknownIssue()) {
        return;
    }

    findElement(By.id(caseName)).click();

    String statusText = findElement(By.id("new-component")).getText();
    Assert.assertEquals("Div updated for " + caseName, statusText);

    List<LogEntry> entries = getLogEntries(Level.SEVERE);
    Assert.assertEquals(2, entries.size());

    Assert.assertThat(entries.get(0).getMessage(),
            Matchers.containsString(errorMessageSnippet));
    Assert.assertThat(entries.get(1).getMessage(),
            Matchers.containsString("could not be loaded"));
}
 
源代码16 项目: AppiumTestDistribution   文件: TestLogger.java
protected void startLogging(ITestResult iTestResult)
        throws IOException, InterruptedException {
    String methodName = iTestResult.getMethod().getMethodName();
    String className = iTestResult.getTestClass()
        .getRealClass().getSimpleName();

    if (isNativeAndroid()) {
        String udid = AppiumDeviceManager.getAppiumDevice().getDevice().getUdid();
        List<LogEntry> logcat = AppiumDriverManager.getDriver().manage()
            .logs().get("logcat").filter(Level.ALL);
        logEntries.set(logcat);
        logFile = new File(System.getProperty("user.dir") + FileLocations.ADB_LOGS_DIRECTORY
                + udid + "__" + methodName + ".txt");
        log_file_writer.set(new PrintWriter(logFile));
    }
    if ("true".equalsIgnoreCase(System.getenv("VIDEO_LOGS"))) {
        IScreenRecord videoRecording = AppiumScreenRecordFactory.recordScreen();
        videoRecording.startVideoRecording(className, methodName, methodName);
    }
    setDescription(iTestResult);
}
 
源代码17 项目: kurento-java   文件: BrowserTest.java
@FailedTest
public static void storeBrowsersLogs() {
  List<String> lines = new ArrayList<>();
  for (String browserKey : browserLogs.keySet()) {
    for (LogEntry logEntry : browserLogs.get(browserKey)) {
      lines.add(logEntry.toString());
    }

    File file = new File(getDefaultOutputFile("-" + browserKey + "-console.log"));

    try {
      FileUtils.writeLines(file, lines);
    } catch (IOException e) {
      log.error("Error while writing browser log to a file", e);
    }
  }
}
 
源代码18 项目: gatf   文件: SeleniumTest.java
public SeleniumTestResult(WebDriver d, SeleniumTest test, Throwable cause, LoggingPreferences ___lp___) {
    this.status = false;
    this.internalTestRes = test.getSession().internalTestRs;
    /*Logs logs = d.manage().logs();
    for (String s : LOG_TYPES_SET) {
        if(!logs.getAvailableLogTypes().contains(s))continue;
        LogEntries logEntries = logs.get(s);
        if(logEntries!=null && !logEntries.getAll().isEmpty()) {
            this.logs.put(s, new SerializableLogEntries(logEntries.getAll())); 
        }
    }*/
    List<LogEntry> entries = new ArrayList<LogEntry>();
    entries.add(new LogEntry(Level.ALL, new Date().getTime(), cause.getMessage()));
    entries.add(new LogEntry(Level.ALL, new Date().getTime(), ExceptionUtils.getStackTrace(cause)));
    this.logs.put("gatf", new SerializableLogEntries(entries));
}
 
源代码19 项目: selenium   文件: RemoteLogs.java
private LogEntries getRemoteEntries(String logType) {
  Object raw = executeMethod.execute(DriverCommand.GET_LOG, ImmutableMap.of(TYPE_KEY, logType));
  if (!(raw instanceof List)) {
    throw new UnsupportedCommandException("malformed response to remote logs command");
  }
  @SuppressWarnings("unchecked")
  List<Map<String, Object>> rawList = (List<Map<String, Object>>) raw;
  List<LogEntry> remoteEntries = new ArrayList<>(rawList.size());

  for (Map<String, Object> obj : rawList) {
    remoteEntries.add(new LogEntry(LogLevelMapping.toLevel((String)obj.get(LEVEL)),
        (Long) obj.get(TIMESTAMP),
        (String) obj.get(MESSAGE)));
  }
  return new LogEntries(remoteEntries);
}
 
源代码20 项目: selenium   文件: JsonOutputTest.java
@Test
public void convertLogEntriesToJson() {
  long timestamp = new Date().getTime();
  final LogEntry entry1 = new LogEntry(Level.OFF, timestamp, "entry1");
  final LogEntry entry2 = new LogEntry(Level.WARNING, timestamp, "entry2");
  LogEntries entries = new LogEntries(asList(entry1, entry2));

  String json = convert(entries);

  JsonArray converted = new JsonParser().parse(json).getAsJsonArray();

  JsonObject obj1 = converted.get(0).getAsJsonObject();
  JsonObject obj2 = converted.get(1).getAsJsonObject();
  assertThat(obj1.get("level").getAsString()).isEqualTo("OFF");
  assertThat(obj1.get("timestamp").getAsLong()).isEqualTo(timestamp);
  assertThat(obj1.get("message").getAsString()).isEqualTo("entry1");
  assertThat(obj2.get("level").getAsString()).isEqualTo("WARNING");
  assertThat(obj2.get("timestamp").getAsLong()).isEqualTo(timestamp);
  assertThat(obj2.get("message").getAsString()).isEqualTo("entry2");
}
 
源代码21 项目: selenium   文件: RemoteLogsTest.java
@Test
public void canGetProfilerLogs() {
  List<LogEntry> entries = new ArrayList<>();
  entries.add(new LogEntry(Level.INFO, 0, "hello"));
  when(localLogs.get(LogType.PROFILER)).thenReturn(new LogEntries(entries));

  when(
      executeMethod.execute(
          DriverCommand.GET_LOG, ImmutableMap.of(RemoteLogs.TYPE_KEY, LogType.PROFILER)))
      .thenReturn(singletonList(
          ImmutableMap.of("level", Level.INFO.getName(), "timestamp", 1L, "message", "world")));

  LogEntries logEntries = remoteLogs.get(LogType.PROFILER);
  List<LogEntry> allLogEntries = logEntries.getAll();
  assertThat(allLogEntries).hasSize(2);
  assertThat(allLogEntries.get(0).getMessage()).isEqualTo("hello");
  assertThat(allLogEntries.get(1).getMessage()).isEqualTo("world");
}
 
源代码22 项目: selenium   文件: RemoteLogsTest.java
@Test
public void canGetLocalProfilerLogsIfNoRemoteProfilerLogSupport() {
  List<LogEntry> entries = new ArrayList<>();
  entries.add(new LogEntry(Level.INFO, 0, "hello"));
  when(localLogs.get(LogType.PROFILER)).thenReturn(new LogEntries(entries));

  when(
      executeMethod.execute(
          DriverCommand.GET_LOG, ImmutableMap.of(RemoteLogs.TYPE_KEY, LogType.PROFILER)))
      .thenThrow(
          new WebDriverException("IGNORE THIS LOG MESSAGE AND STACKTRACE; IT IS EXPECTED."));

  LogEntries logEntries = remoteLogs.get(LogType.PROFILER);
  List<LogEntry> allLogEntries = logEntries.getAll();
  assertThat(allLogEntries).hasSize(1);
  assertThat(allLogEntries.get(0).getMessage()).isEqualTo("hello");
}
 
源代码23 项目: apicurio-registry   文件: SeleniumProvider.java
private StringBuilder formatedBrowserLogs() {
    StringBuilder logEntries = new StringBuilder();
    SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    for (LogEntry logEntry : getBrowserLog().getAll()) {
        logEntries.append(logEntry.getLevel()).append(": ")
                .append(sdfDate.format(logEntry.getTimestamp())).append(": ")
                .append(logEntry.getMessage()).append(System.lineSeparator());
    }
    return logEntries;
}
 
源代码24 项目: vividus   文件: BrowserLogManager.java
public static Set<LogEntry> getFilteredLog(WebDriver driver, Collection<BrowserLogLevel> logLevelsToInclude)
{
    LogEntries log = getLog(driver);
    return logLevelsToInclude.stream()
            .map(BrowserLogLevel::getLevel)
            .flatMap(level -> filter(log, level))
            .collect(Collectors.toCollection(LinkedHashSet::new));
}
 
源代码25 项目: vividus   文件: BrowserLogManager.java
private static Stream<LogEntry> filter(LogEntries log, Level level)
{
    int levelValue = level.intValue();
    return log.getAll().stream().filter(logEntry ->
    {
        int logEntryLevel = logEntry.getLevel().intValue();
        return logEntryLevel >= levelValue && logEntryLevel <= levelValue;
    });
}
 
源代码26 项目: vividus   文件: JsValidationSteps.java
/**
 * Checks that opened page contains JavaScript browser console logs that matches regex.
 * <p>Note that log buffers are reset after step invocation, meaning that available log entries correspond to those
 * entries not yet returned for a given log type. In practice, this means that this step invocation will return the
 * available log entries since the last step invocation (or from the last page navigation if corresponding listener
 * is enabled).</p>
 * <p>Step passes if console logs were found, otherwise it fails. All found logs are available in
 * report step's attachment</p>
 * @param logEntries Log entries to check: "errors", "warnings", "errors, warnings" or "warnings, errors"
 * @param regex Regular expression to filter log entries
 */
@Then(value = "there are browser console $logEntries by regex `$regex`")
public void checkThereAreLogEntriesOnOpenedPageFiltredByRegExp(List<BrowserLogLevel> logEntries, String regex)
{
    WebDriver webDriver = webDriverProvider.get();
    Set<LogEntry> filteredLogEntries = BrowserLogManager.getFilteredLog(webDriver, logEntries).stream()
            .filter(logEntry -> logEntry.getMessage().matches(regex))
            .collect(Collectors.toSet());

    publishAttachment(Map.of(webDriver.getCurrentUrl(), filteredLogEntries));
    softAssert.assertFalse(String.format("Current page contains JavaScript %s by regex '%s'",
            toString(logEntries), regex), filteredLogEntries.isEmpty());
}
 
源代码27 项目: vividus   文件: JsValidationSteps.java
private void checkFilteredJsEntries(List<BrowserLogLevel> logLevels, Predicate<? super LogEntry> filter)
{
    WebDriver webDriver = webDriverProvider.get();
    Set<LogEntry> filteredLogEntries = BrowserLogManager.getFilteredLog(webDriver, logLevels).stream()
            .filter(filter)
            .collect(Collectors.toSet());

    publishAttachment(Map.of(webDriver.getCurrentUrl(), filteredLogEntries));
    softAssert.assertEquals("Current page contains no JavaScript " + toString(logLevels), 0,
            filteredLogEntries.size());
}
 
源代码28 项目: vividus   文件: BrowserLogManagerTests.java
@Test
void shouldReturnFilteredLogContainingEntries()
{
    WebDriver webDriver = mockBrowserName(BrowserType.CHROME);
    LogEntries logEntries = mockLogRetrieval(webDriver);
    Set<LogEntry> filteredLog = BrowserLogManager.getFilteredLog(webDriver, singleton(BrowserLogLevel.ERRORS));
    assertEquals(singleton(logEntries.getAll().get(0)), filteredLog);
}
 
源代码29 项目: vividus   文件: BrowserLogManagerTests.java
@Test
void shouldReturnFilteredLogContainingNoEntries()
{
    WebDriver webDriver = mockBrowserName(BrowserType.CHROME);
    mockLogRetrieval(webDriver);
    Set<LogEntry> filteredLog = BrowserLogManager.getFilteredLog(webDriver, singleton(BrowserLogLevel.WARNINGS));
    assertEquals(emptySet(), filteredLog);
}
 
源代码30 项目: vividus   文件: BrowserLogManagerTests.java
private static LogEntries mockLogRetrieval(WebDriver webDriver)
{
    Options options = mock(Options.class);
    when(webDriver.manage()).thenReturn(options);
    Logs logs = mock(Logs.class);
    when(options.logs()).thenReturn(logs);
    when(options.logs()).thenReturn(logs);
    LogEntry severeEntry = new LogEntry(Level.SEVERE, 1L, ERROR_MESSAGE);
    LogEntry infoEntry = new LogEntry(Level.INFO, 1L, ERROR_MESSAGE);
    LogEntries logEntries = new LogEntries(Arrays.asList(severeEntry, infoEntry));
    when(logs.get(LogType.BROWSER)).thenReturn(logEntries);
    return logEntries;
}
 
 类所在包
 类方法
 同包方法