在selenium自动化中打开url时出现空指针异常



这里,我使用的是页面对象模型,我想将驱动程序传递给其他类。但是我在启动网站时得到了空指针异常(driver.get("((

这是我的基本类

public class BaseClass {
public WebDriver driver;
public Logger logger = Logger.getLogger(Common.class.getPackage().getName());
public void startBrowser() {
if(driver == null) {
System.setProperty("webdriver.chrome.driver", "desktop/chromedriver.exe");
driver = new ChromeDriver();
}
}
public void quitBrowser() {
driver.quit();
}

}

然后这是我的跑步类:

public class TestRunnerTestNG extends AbstractTestNGCucumberTests {
BaseClass a;
@BeforeClass
public void launch()
{
a = new BaseClass();
a.startBrowser();
}
@AfterClass
public void tearBrowser()
{
a.quitBrowser();
}

}

在这里,我使用Beforeclass注释启动浏览器,并使用afterClass注释退出浏览器。

下面的类是我的页面对象类:这里我有启动url的方法:

public class SignIn extends BaseClass {

public SignIn(WebDriver driver) {
this.driver = driver ;
PageFactory.initElements(driver, this);
}
//Locators
@FindBy(id = "email")
private WebElement user_Email;
@FindBy(id = "password")
private WebElement user_Password;
@FindBy(xpath = "//span[text()='Sign In']")
private WebElement signIn_Btn;

公共空地(({

driver.get("https://***************"); <<<< Here I am getting the null pointer exception.
}

public void signInPageGUI()
{
boolean checkSignInTextGUI = waitElement(signInText);
Assert.assertTrue(checkSignInTextGUI);
boolean CheckEmailField = waitElement(user_Email);
Assert.assertTrue(CheckEmailField);
boolean checkPwdField = waitElement(user_Password);
Assert.assertTrue(checkPwdField);
}
private void emailField(String emailName) {
user_Email.sendKeys(emailName);
}
private void passwordField(String password) {
user_Password.sendKeys(password);
}

}

最后的代码是我的步骤定义类,这就是我调用代码的地方。

public class LoginPage {
WebDriver driver ;
@Given("user landed to the yoco URL {string}")
public void landedOnYoCo(String string) {
System.out.println("print the string" +string);
System.out.println("driver value is " );
SignIn logIN = new SignIn(driver);
logIN.landing();
}

}

在这里,只有我在调用登陆方法来启动网站。

错误为:

java.lang.NullPointerException
at pageObject.SignIn.landing(SignIn.java:83)
at stepDefs.LoginPage.landedOnYoCo(LoginPage.java:32)
at ✽.user landed to the yoco URL "https://my.yocoboard.com"(file:///Users/vinoth/Git/YoCoAutomation/src/test/resources/logIN.feature:7)

在调用landing以初始化driver之前先调用startBrowser

public void landedOnYoCo(String string) {
System.out.println("print the string" +string);
System.out.println("driver value is " );
SignIn logIN = new SignIn(driver);
logIN.startBrowser();
logIN.landing();
}

最新更新