[英]How to fix 'java.lang.NullPointerException' with selenium, cucmber and gradle?
我嘗試編寫一些測試,但是驅動程序有問題。 我敢肯定,我對驅動程序有誤。
BaseTest-對於初始化瀏覽器,設置一些選項
public class BaseTest {
public WebDriver driver;
protected Properties prop;
@BeforeClass
public void init() throws IOException {
loadSettings();
if (prop.getProperty("browser.name").equals("chrome")) {
System.setProperty("webdriver.chrome.driver", "D:\\SeleniumJava\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("disable-infobars");
//options.addArguments("--start-maximized");
driver = new ChromeDriver(options);
}
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.manage().window().maximize();
}
private void loadSettings() throws IOException {
prop = new Properties();
InputStream in = ClassLoader.getSystemResourceAsStream("settings.properties");
prop.load(in);
in.close();
}
}
LoginPage我刪除了憑據。
public class LoginPage{
public LoginPage(WebDriver driver)
{
PageFactory.initElements(driver, this);
}
public final String boardGameGeekHome_URL = "https://www.boardgamegeek.com/";
public final String loginName = "xx";
public final String password = "xx";
@FindBy(how = How.XPATH, using = "//input[@id='login_username']")
public WebElement loginUserNameInput;
@FindBy(how = How.XPATH, using = "//input[@id='login_password']")
public WebElement loginPasswordInput;
@FindBy(how = How.XPATH, using = "//input[@type='submit']")
public WebElement submitButton;
public void loginUser(String loginName, String passoword)
{
loginUserNameInput.sendKeys(loginName);
loginPasswordInput.sendKeys(passoword);
submitButton.click();
}
}
測試的一部分
public class CompareLangDepStep extends BaseTest {
@Given("User account with a game collection")
public void UserAccountWithAGameCollection() {
LoginPage LoginPage = new LoginPage(driver);
driver.get(LoginPage.boardGameGeekHome_URL);
LoginPage.loginUser(LoginPage.loginName, LoginPage.password);
}
錯誤輸出
java.lang.NullPointerException
at Steps.CompareLangDepStep.UserAccountWithAGameCollection(CompareLangDepStep.java:30)
at ✽.User account with a game collection
看起來很奇怪,但我對黃瓜只有這個問題。
必須正確初始化驅動程序-查看更新的代碼,
public class LoginPage{
private final Webdriver driver;
public LoginPage(WebDriver driver)
{
this.driver = driver
PageFactory.initElements(this.driver, this);
}
public final String boardGameGeekHome_URL = "https://www.boardgamegeek.com/";
public final String loginName = "xx";
public final String password = "xx";
@FindBy(how = How.XPATH, using = "//input[@id='login_username']")
public WebElement loginUserNameInput;
@FindBy(how = How.XPATH, using = "//input[@id='login_password']")
public WebElement loginPasswordInput;
@FindBy(how = How.XPATH, using = "//input[@type='submit']")
public WebElement submitButton;
public void loginUser(String loginName, String passoword)
{
loginUserNameInput.sendKeys(loginName);
loginPasswordInput.sendKeys(passoword);
submitButton.click();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.