嗨,我正在尝试在POM中创建一个简单的自动化脚本,但是在脚本执行过程中遇到了java.lang.NullPointerException。请任何人帮助我解决问题。
通过创建浏览器工厂,返回WebDriver。
package Com.selenium.utils;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class BrowserFactory {
public static WebDriver BrowserStart(WebDriver driver,String browsername, String url) {
if(browsername.equalsIgnoreCase("Chrome")) {
System.setProperty("webdriver.chrome.driver", "E:\\Eclipse-Java-Kepler\\New folder\\chromedriver\\chromedriver.exe");
driver = new ChromeDriver();
}
else if(browsername.equalsIgnoreCase("Firefox")){
// System.setProperty("", "");
}
else if(browsername.equalsIgnoreCase("IE")) {
// System.setProperty("", "");
}
else {
System.out.print("Browser is not supported");
}
driver.get(url);
driver.manage().window().maximize();
return driver;
}
}
以下代码用于基本类
package Com.selenium.pages;
import org.openqa.selenium.WebDriver;
import Com.selenium.utils.BrowserFactory;
public class BaseClass implements IClass {
public WebDriver WD;
public WebDriver Setup() {
return BrowserFactory.BrowserStart(WD, "chrome", "https://www.udemy.com/");
}
}
然后,我创建了一个类,其中包含用于在该页面上执行任何操作的所有WebElements和方法
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
public class LandingClass {
public WebDriver WD = null;
public LandingClass(WebDriver driver) {
this.WD = driver;
PageFactory.initElements(driver, this);
}
@FindBy(xpath=".//button[@class='btn btn-quaternary']")
public WebElement LoginButton;
public void Openlgin() {
LoginButton.click();
}
}
最后,我创建了一个TestNG类来运行测试用例,但是在执行测试用例的过程中得到了“ NullPointerException”
package Com.selenium.tests;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import Com.selenium.pages.BaseClass;
import Com.selenium.pages.LandingClass;
public class LoginScenarios extends BaseClass {
LandingClass LC;
@BeforeTest
public void setup() {
super.Setup();
LC = new LandingClass(WD);
}
@Test(priority = 0)
public void OpenLogin() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
LC.Openlgin();
}
}