代码之家  ›  专栏  ›  技术社区  ›  EliteRaceElephant

为什么ChromeDriver一直记录到控制台?

  •  2
  • EliteRaceElephant  · 技术社区  · 6 年前

    我有一个Java项目,它使用selenium和ChromeDriver在我的网站上自动化测试。我为日志文件配置了log4j2和slf4j。但是,驱动程序拒绝登录到我的文件,而是使用控制台:

    Starting ChromeDriver 2.30.477700 (0057494ad8732195794a7b32078424f92a5fce41) on port 41019
    Only local connections are allowed.
    log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    Apr 20, 2018 12:31:42 AM org.openqa.selenium.remote.ProtocolHandshake createSession
    INFO: Detected dialect: OSS
    

    我必须在日志设置中调整什么,以便web驱动程序登录到我的日志文件而不是控制台? 对不起,我对日志记录的了解有限。如果能解释一下我做错了什么,我将不胜感激。

    我在log4j2中尝试了以下appender。xml:

    <logger name="org.openqa.selenium" level="all">
        <AppenderRef ref="selenium"/>
    </logger>
    <logger name="webdriver.chrome" level="all">
        <AppenderRef ref="webdriverChrome"/>
    </logger>
    <logger name="org.apache.http.client.protocol.RequestAddCookies" level="all">
        <AppenderRef ref="webdriverChrome"/>
    </logger>
    <logger name="org.seleniumhq.selenium.selenium-chrome-driver" level="all">
        <AppenderRef ref="webdriverChrome"/>
    </logger>
    

    我的maven pom。xml:

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.7</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.22</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.22</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-firefox-driver</artifactId>
        <version>3.4.0</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>htmlunit-driver</artifactId>
        <version>2.24</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-chrome-driver</artifactId>
        <version>3.4.0</version>
    </dependency>
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   EliteRaceElephant    6 年前

    我找到了这个半生不熟的解决方案。初始化web/chrome驱动程序时使用以下代码:

      Properties log4jProp = new Properties();
      log4jProp.setProperty("log4j.rootLogger", "WARN");
      PropertyConfigurator.configure(log4jProp);
    
      System.setProperty("webdriver.chrome.logFile", ".//log//webdriverChrome_1.log");
      System.setProperty("webdriver.chrome.driver", ".\\path\\to\\chromedriver.exe");
      driver = new ChromeDriver();
      driver.manage().timeouts().implicitlyWait(waitInMilliseconds, TimeUnit.MILLISECONDS);
    

    它只删除日志框架的警告。我在某种程度上感到满意。如果有人知道如何将控制台消息的其余部分输入记录器,我们将不胜感激。

    目前的结果是:

    Starting ChromeDriver 2.30.477700 (0057494ad8732195794a7b32078424f92a5fce41) on port 41019
    Only local connections are allowed.
    Apr 20, 2018 12:31:42 AM org.openqa.selenium.remote.ProtocolHandshake createSession
    INFO: Detected dialect: OSS