如何在selenium webdriver中使用log4j打印日志

时间:2017-06-25 23:33:49

标签: log4j

环境: Java,Selenium webdriver,Maven,testNG,Log4J,Eclipse

  1. XML
  2. <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    <suite name="TestAll" parallel = "tests" thread-count = "2">
    
     <test name="postivelogintest_IE">
     <parameter name="browser" value="ie"/>
    
     <classes>
     <class name="com.dice.LoginTest">
     <methods>
     <include name="DataDrivenpositiveLoginTest"/>
     </methods>
     </class>
     </classes>
     </test>
    
    
     <test name="postivelogintest_CH">
     <parameter name="browser" value="ch"/>
    
     <classes>
     <class name="com.dice.LoginTest">
     <methods>
     <include name="DataDrivenpositiveLoginTest"/>
     </methods>
     </class>
     </classes>
     </test>
    
    
    </suite>
    
    1. BaseTest.java
    2. package com.diceBase;
      import org.apache.log4j.Logger;
      import org.openqa.selenium.WebDriver;
      import org.testng.annotations.AfterMethod;
      import org.testng.annotations.BeforeMethod;
      import org.testng.annotations.Parameters;
      
      
      
      
      public class BaseTest {
       protected WebDriver driver;
       protected Logger log;
      
          @Parameters ({"browser"})
       @BeforeMethod
       protected void MethodSetup(String browser){
       log.info("method set up"); // line 16
       driver = BrowserFactory.getDriver(browser);
       }
      
       @AfterMethod
       protected void TearDown(){
       log.info("method tear down");
      
      
       try {
       Thread.sleep(5000);
       driver.quit();
       } catch (Exception e) {
       }
       }
      }
      
      1. 我在src / main / resources下添加了log4j.properties。

        enter image description here

      2. 在BaseTest.java中,我在导入log4j后添加了两行。

        log.info(&#34;方法设置&#34;);

        log.info(&#34;方法拆除&#34;);

      3. iMy的目标是能够使用log.info整个项目。在此之前,我想通过仅导入basetest类中的log4j logger来测试它,看它是否有效。如果它有效,那么我可以在整个项目中导入log4j。

        如果我保留两条日志消息,我会收到错误消息。但是,如果我删除两个日志消息,脚本传递。如何使用log4j打印日志? enter image description here

1 个答案:

答案 0 :(得分:1)

BaseTest.java中的日志变量未分配logger类(https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Logger.html)的对象。由于没有将对象分配给变量日志,因此会抛出NULL指针异常。所以请将logger类的对象创建为可变日志