gpt4 book ai didi

java - 我正在 selenium 自动化中创建页面对象模型框架,并且面临 java 空指针异常

转载 作者:行者123 更新时间:2023-12-02 09:02:41 25 4
gpt4 key购买 nike

一共有三个类(class)。一个用于浏览器初始化的类(BrowserConfig.java),一个用于存储页面元素的类(LoginPageElements.java),一个用于执行测试用例的类(Login_positive_case.java)。

BrowserConfig.java

package com.midcities.utility;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

import com.paulhammant.ngwebdriver.NgWebDriver;

public class BrowserConfig {

public static WebDriver startApplication(WebDriver driver, String browsername, String AppUrl) {

if(browsername.equalsIgnoreCase("chrome")) {

System.setProperty("webdriver.chrome.driver", "./Drivers/chromedriver.exe");

driver = new ChromeDriver();

} else if(browsername.equalsIgnoreCase("firefox")){

System.setProperty("webdriver.gecko.driver", "./Drivers/geckodriver.exe");

driver = new FirefoxDriver();

} else {

System.out.println("Browser not supported");
}

NgWebDriver ngWebDriver = new NgWebDriver((JavascriptExecutor) driver);

ngWebDriver.waitForAngularRequestsToFinish();

driver.manage().window().maximize();

driver.get(AppUrl);

driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

return driver;
}



public static void quitBrowser(WebDriver driver) {

driver.quit();

}

}

LoginPageElements.java

package com.midcities.pages;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

import com.paulhammant.ngwebdriver.ByAngular;

public class LoginPageElements {

WebDriver driver;

public LoginPageElements(WebDriver driver){

this.driver = driver;

}

public void Login(String uname, String pass) {

driver.findElement(By.id("mat-input-0")).sendKeys(uname);

driver.findElement(By.id("mat-input-1")).sendKeys(pass);

driver.findElement(ByAngular.buttonText("SIGN IN")).click();

}


}

Login_positive_case.java

package com.midcities.testcases;

import org.openqa.selenium.WebDriver;
import org.testng.annotations.Test;

import com.midcities.pages.LoginPageElements;
import com.midcities.utility.BrowserConfig;

public class Login_Positive_Case {

WebDriver driver;

@Test
public void loginIntoTheApplication() {

BrowserConfig.startApplication(driver, "chrome", "http://test.com/");

LoginPageElements loginFunc = new LoginPageElements(driver);

loginFunc.Login("test@gmail.com", "test");

}

}

控制台日志

FAILED: loginIntoTheApplication
java.lang.NullPointerException
at com.midcities.pages.LoginPageElements.Login(LoginPageElements.java:20)
at com.midcities.testcases.Login_Positive_Case.loginIntoTheApplication(Login_Positive_Case.java:20)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)

最佳答案

BrowserConfig.startApplication在方法范围内初始化新的WebDriver,需要使用返回值

driver = BrowserConfig.startApplication(driver, "chrome", "http://test.com/"); 

关于java - 我正在 selenium 自动化中创建页面对象模型框架,并且面临 java 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60051163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com