Я новичок в selenium, и я столкнулся с этим исключением null-указателя в моем коде, Вот класс одного из объектов моей страницы (Страница входа).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 ("БТН БТН-первичный БТН-LG");
Пожалуйста, дайте мне знать, как обрабатывать сложные классы. Любая помощь/обратная связь будут оценены. Благодарю.
Вы указали экземпляр драйвера webdriver как закрытый в классе lib, который корректен, а затем вы снова объявляете экземпляр драйвера webdriver в классе LoginPage, который является неправильным. –
@RupeshShinde Большое спасибо, что удалось решить. Можете ли вы дать мне знать, как бороться с сложными именами классов. Я получаю сообщение об ошибке org.openqa.selenium.InvalidSelectorException: недействительный селектор: Составные имена классов не допускается , который, кажется, это один, По signInBtn = By.className («БТН БТН-первичный БТН-ДЖИ») ; Любая идея, как с этим справиться? – Uziii
@Uziii, пожалуйста, обратите внимание, если вы хотите изменить вопрос, а затем отредактировать исходный запрос, иначе вы будете помечены, чтобы задавать вопросы ненадлежащим образом. –