当前位置: 首页 > 知识库问答 >
问题:

为什么Selenium的DriversService会打印到错误流中?如何避免呢?-JAVA

裴卓君
2023-03-14

我将Selenium与ChromeDriverService一起使用。

在其基类DriverService中,它启动服务并将输出消息打印到系统。错误stream。

private CommandLine process = null;

  public void start() throws IOException {
    lock.lock();
    try {
      if (process != null) {
        return;
      }
      process = new CommandLine(this.executable, args.toArray(new String[] {}));
      process.setEnvironmentVariables(environment);
      process.copyOutputTo(System.err);
      process.executeAsync();

      waitUntilAvailable();
    } finally {
      lock.unlock();
    }
  }

我的第一个问题是为什么错误流?它只是打印一些关于chrome驱动程序初始化的信息。

在我的应用程序中,所有进入System.err的内容都显示在应用程序的日志中,日志级别为SEVERE。

我的第二个问题是如何避免它并将其显示为INFO日志级别?不可能扩展ChromeDriverService并覆盖start方法,因为DriverService包含一些我需要但无法访问的私有数据成员。

谢谢。

另外,我使用的是Selenium 2.5.2,但在较新的版本中是相同的概念

共有1个答案

宁兴修
2023-03-14

DriverService的Selenium 3.14.0,您是对的,默认值是System。犯错误看起来确实可以按如下所示更改此默认值,在较新版本中,start()方法已更改为使用getOutputStream()。这将允许您更改默认值。

private OutputStream outputStream = System.err;  // default


// You should call this method and set the output to your desired location
    public void sendOutputTo(OutputStream outputStream) {
      this.outputStream = Preconditions.checkNotNull(outputStream);
    }


public void start() throws IOException {
    lock.lock();
    try {
      if (process != null) {
        return;
      }
      process = new CommandLine(this.executable, args.toArray(new String[] {}));
      process.setEnvironmentVariables(environment);
      process.copyOutputTo(getOutputStream());   // This has changed...
      process.executeAsync();

      waitUntilAvailable();
    } finally {
      lock.unlock();
    }
  }
 类似资料:
  • 问题内容: 我用option运行pytest 。 不幸的是,这会打印出很多点。例: 有没有办法避免这么长的点和“ s”字符列表? 更新资料 有一个有效的答案。但是不知何故对我来说太长了。我现在使用此解决方法:我将其添加到调用pytest的脚本中: 问题答案: 详细选项无法关闭测试结果打印。但是,可以通过多种方式进行自定义,包括结果打印。要更改此设置,您将覆盖该挂钩。 关闭短字母 创建一个具有以下内

  • 我使用Java实现了很多Selenium测试—有时,我的测试会因为StaleElementReferenceException而失败。 你能建议一些使测试更稳定的方法吗?

  • 我正在将oracle从10升级到12,对于这个特定的项目,我遇到了以下错误: 似乎它没有识别我在DataSource上添加的配置: 我们使用的是Java 8,我们对代码有这些依赖关系: 问题是它正在为另一个项目工作(与这个项目具有相同的结构,但由于某种原因它在这里不起作用) 是否有任何遗漏或我可以找到问题并解决问题的地方?

  • 当方法调用的嵌套层级过深,导致栈空间耗尽时,会抛出StackOverflowError错误。 尝试复现问题,代码如下:

  • 我被困在编写Python Selenium脚本中,似乎无法令人满意地解决我得到的这个StaleElementReistrceException。 我加载了我的页面,然后单击一个按钮,打开一个表单,允许用户向订单中添加新的信用卡。在这一点上,我做了一个WebDriverWait来暂停脚本,直到这个表单上的Save按钮变为可见。此时,重新创建页面对象,因为它已更改,我的目的是填充字段并保存卡片。 问题

  • 线上出现这种问题的,过了一会就好了