我是新來的硒,我在我的代碼中面臨這個空指針異常, 這是我的一個頁面對象(Login Page)。Selenium WebDriver POM處理複合類
package Pages;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import Lib.lib;
public class LoginPage extends lib{
WebDriver driver;
By loginLink = By.xpath("/html/body/nav/div/a[7]");
By emailInput = By.name("email");
By passwordInput = By.name("password");
By signInBtn = By.className("btn btn-primary btn-lg");
public LoginPage(WebDriver driver)
{
this.driver=driver;
}
public void redirectToLogin()
{
driver.findElement(loginLink).click();
new WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated(emailInput));
}
public void enterEmail(String email)
{
driver.findElement(emailInput).sendKeys(email);
}
public void enterPW(String password)
{
driver.findElement(passwordInput).sendKeys(password);
}
public void clickOnSignIn() throws Exception
{
driver.findElement(signInBtn).click();
Thread.sleep(3000);
}
public void loginToKB(String userEmail, String userPW) throws Exception
{
this.redirectToLogin();
this.enterEmail(userEmail);
this.enterPW(userPW);
this.clickOnSignIn();
}
}
這是我的測試案例代碼
package TestCases;
import org.testng.annotations.Test;
import Lib.lib;
import Pages.LoginPage;
public class logging_in extends lib {
LoginPage memLogin = new LoginPage(driver);
@Test
public void user_login() throws Exception
{
memLogin.loginToKB("[email protected]", "uziii");
}
}
我從LIB類,這是繼進口鉻驅動程序配置,
package Lib;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;
public class lib {
protected static WebDriver driver = null;
@BeforeTest
public void chrome_extension()
{
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver(options);
driver.get("http://www.testsite.com");
}
@AfterTest
public void quit()
{
driver.quit();
}
}
當我運行我的測試案例(logging_in),我最初重定向到網站頁面,但之後,它停止執行,並給我複合類錯誤。
錯誤似乎指出對這個,
通過signInBtn = By.className( 「BTN BTN-初級BTN-LG」);
請讓我知道,如何處理複合類。任何幫助/反饋將不勝感激。謝謝。
你已經聲明webdriver驅動程序實例在類lib中是私有的,然後你再次在類LoginPage中聲明webdriver驅動實例是不正確的。 –
@RupeshShinde非常感謝,解決了。你能讓我知道如何處理複合類名稱。我正在一個錯誤 org.openqa.selenium.InvalidSelectorException:無效選擇:化合物類名不允許 這似乎是這一個, 通過signInBtn = By.className(「BTN BTN-初級BTN-LG」) ; 任何想法如何處理這些? – Uziii
@Uziii請注意,如果你想改變這個問題,然後編輯你的原始請求,否則你將被標記爲以不正確的方式提問 –