Log4j 没有从内部记录数据 "If else"条件 (Java selenium webdriver)



我面临Log4j的问题。当我运行下面的测试用例时,输出很好,所有测试都通过了。但Log4j没有正确登录。它只记录来自"外部"的数据;如果"否则";条件和从内部跳过数据";如果"否则";条件

我的测试脚本:

package com.LoginPage.Testcase;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class LoginPageDDT {
public static WebDriver driver;

public static Logger logger;

@Parameters("browser")
@BeforeClass

public void setup(String br)
{
logger = Logger.getLogger("LoginPage");
PropertyConfigurator.configure("Log4j.properties");
if(br.equals("chrome"))
{
System.setProperty("webdriver.chrome.driver", "./Drivers\chromedriver.exe");  
driver=new ChromeDriver();
}
else if(br.equals("firefox"))
{
System.setProperty("webdriver.gecko.driver", "./Drivers\geckodriver.exe");  
driver = new FirefoxDriver();
}
else if(br.equals("ie"))
{
System.setProperty("webdriver.ie.driver", "./Drivers\IEDriverServer.exe");       
driver = new InternetExplorerDriver();
}

driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.get("http://the-internet.herokuapp.com/");
driver.manage().window().maximize();
}

@Test(dataProvider = "LoginData")

public void loginTest(String user, String pwd, String exp)
{
driver.get("http://the-internet.herokuapp.com/");

driver.findElement(By.xpath("//a[contains(text(),'FormAuthentication')]")).click();

WebElementtxtEmail=driver.findElement(By.xpath("//input[@id='username']"));
txtEmail.clear();
txtEmail.sendKeys(user);
logger.info("user name provided");

WebElementtxtPassword=driver.findElement(By.xpath("//input[@id='password']"));
txtPassword.clear();
txtPassword.sendKeys(pwd);
logger.info("passward provided");

driver.findElement(By.xpath("//i[contains(text(),'Login')]")).click();//Login  button

String exp_title="The Internet";
String act_title=driver.getTitle();
System.out.println(act_title);
WebDriverWait wait = new WebDriverWait(driver, 5);

if(exp.equals("Valid"))
{
if(exp_title.equals(act_title))
{
logger.info("Login Passed");
Assert.assertTrue(true);

driver.findElement(By.xpath("//body/div[2]/div[1]/div[1]/a[1]")).click();


}
else
{
Assert.assertTrue(false);
logger.info("Login failed");
}
}
else if(exp.equals("Invalid"))
{
if(exp_title.equals(act_title))
{

Assert.assertTrue(false);
logger.info("Login passed");

driver.findElement(By.xpath("//body/div[2]/div[1]/div[1]/a[1]")).click();

}
else
{
Assert.assertTrue(true);
logger.info("Login failed");
}
}
}

@DataProvider(name="LoginData")
public String [][] getData() throws IOException
{
String loginData[][]= {

{"tomsmith", "SuperSecretPassword!", "Valied"},
{"tomsmith", "SuperSecretPasswor!", "Invalied"},
{"tomsmit", "SuperSecretPassword!", "Invalied"},
{"tomsmith", "SuperSecretPassword!", "Valied"},
};

return loginData;
}

@AfterClass
public void tearDown()
{
driver.quit();
}

}

我的TestNG套件

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="LoginPageTemplateV2">
<listeners>
<listener class-name="com.LoginPage.Utilities.Reporting" />
</listeners>

<test name="LoginPage Test">
<parameter name="browser" value="firefox" />
<classes>
<!-- <class name="com.inetbanking.testCases.TC_LoginTest_001" />-->
<!-- class name="com.inetbanking.testCases.TC_LoginDDT_002" />-->
<class name="com.LoginPage.Testcase.LoginPageDDT" />
</classes>
</test>
</suite>

我的测试日志

2022-03-26 11:35:17,071 - LoginPage -INFO - user name provided
2022-03-26 11:35:17,656 - LoginPage -INFO - passward provided
2022-03-26 11:35:19,742 - LoginPage -INFO - user name provided
2022-03-26 11:35:19,987 - LoginPage -INFO - passward provided
2022-03-26 11:35:21,978 - LoginPage -INFO - user name provided
2022-03-26 11:35:22,193 - LoginPage -INFO - passward provided
2022-03-26 11:35:23,874 - LoginPage -INFO - user name provided
2022-03-26 11:35:24,045 - LoginPage -INFO - passward provided

CCD_ 1是在";如果"否则";条件;CCD_ 2是在";如果"否则";条件,这些条件不是日志记录。我尝试更改不同版本的Log4j依赖项。但什么都不管用。

您似乎在getData((方法中犯了一个拼写错误,这就是为什么代码没有进入if-else块的原因。请替换以下代码并尝试。

I am Facing issue with Log4j. When I run my below Test case, it was fine with output and all tests has been passed. But Log4j was not Logging properly. It was logging data only from outside of "If else" condition and skipping data from inside "If else" condition.
My Test script:
package com.LoginPage.Testcase;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class LoginPageDDT {
public static WebDriver driver;

public static Logger logger;

@Parameters("browser")
@BeforeClass

public void setup(String br)
{
logger = Logger.getLogger("LoginPage");
PropertyConfigurator.configure("Log4j.properties");
if(br.equals("chrome"))
{
System.setProperty("webdriver.chrome.driver", "./Drivers\chromedriver.exe");  
driver=new ChromeDriver();
}
else if(br.equals("firefox"))
{
System.setProperty("webdriver.gecko.driver", "./Drivers\geckodriver.exe");  
driver = new FirefoxDriver();
}
else if(br.equals("ie"))
{
System.setProperty("webdriver.ie.driver", "./Drivers\IEDriverServer.exe");       
driver = new InternetExplorerDriver();
}

driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.get("http://the-internet.herokuapp.com/");
driver.manage().window().maximize();
}

@Test(dataProvider = "LoginData")

public void loginTest(String user, String pwd, String exp)
{
driver.get("http://the-internet.herokuapp.com/");

driver.findElement(By.xpath("//a[contains(text(),'FormAuthentication')]")).click();

WebElementtxtEmail=driver.findElement(By.xpath("//input[@id='username']"));
txtEmail.clear();
txtEmail.sendKeys(user);
logger.info("user name provided");

WebElementtxtPassword=driver.findElement(By.xpath("//input[@id='password']"));
txtPassword.clear();
txtPassword.sendKeys(pwd);
logger.info("passward provided");

driver.findElement(By.xpath("//i[contains(text(),'Login')]")).click();//Login  button

String exp_title="The Internet";
String act_title=driver.getTitle();
System.out.println(act_title);
WebDriverWait wait = new WebDriverWait(driver, 5);

if(exp.equals("Valid"))
{
if(exp_title.equals(act_title))
{
logger.info("Login Passed");
Assert.assertTrue(true);

driver.findElement(By.xpath("//body/div[2]/div[1]/div[1]/a[1]")).click();


}
else
{
Assert.assertTrue(false);
logger.info("Login failed");
}
}
else if(exp.equals("Invalid"))
{
if(exp_title.equals(act_title))
{

Assert.assertTrue(false);
logger.info("Login passed");

driver.findElement(By.xpath("//body/div[2]/div[1]/div[1]/a[1]")).click();

}
else
{
Assert.assertTrue(true);
logger.info("Login failed");
}
}
}

@DataProvider(name="LoginData")
public String [][] getData() throws IOException
{
String loginData[][]= {

{"tomsmith", "SuperSecretPassword!", "Valid"},
{"tomsmith", "SuperSecretPasswor!", "Invalid"},
{"tomsmit", "SuperSecretPassword!", "Invalid"},
{"tomsmith", "SuperSecretPassword!", "Valid"},
};

return loginData;
}

最新更新