Я пишу тесты для Selenium WebDriver через webdriver-factory от Java и испытываю проблемы с тестированием. У меня есть этот базовый класс для испытаний:Run Selenium Webdriver TestNG тесты с использованием webdriver-factory
public class BaseTest {
private WebDriver driver;
@BeforeSuite
public void setUp() {
WebDriverFactory.setMode(WebDriverFactoryMode.SINGLETON);
this.driver = WebDriverFactory.getDriver(DesiredCapabilities.firefox());
driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
driver.manage().timeouts().setScriptTimeout(40, TimeUnit.SECONDS);
driver.manage().window().maximize();
}
protected LoginPage navigate(String url) {
driver.get(url);
return new LoginPage(driver);
}
@AfterSuite(alwaysRun = true)
public void tearDown() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (driver != null) {
WebDriverFactory.dismissAll();
}
}}
И два класса, который расширяет этот класс: LoginTest и LogoutTest:
public class LoginTest extends BaseTest {
@Test
public void testLoginPage() {
LoggedPage lp = navigate(Constants.URL).
inputLogin(Constants.LOGIN).
selectDomain(Constants.DOMAIN).
inputPassword(Constants.PASSWORD).
login();
Assert.assertTrue(lp.
isUserEmailPresented(),
"User e-mail does not presented!");
lp.logout();
}}
public class LogoutTest extends BaseTest {
private LoggedPage logP;
@BeforeMethod()
public void login() {
logP = navigate(Constants.URL).
inputLogin(Constants.LOGIN).
selectDomain(Constants.DOMAIN).
inputPassword(Constants.PASSWORD).
login();
}
@Test
public void testLogout() {
LoginPage lp = logP.logout();
Assert.assertTrue(lp.
isLoginFieldPresented(),
"Login field does not presented!");
Assert.assertTrue(lp.
isPasswordFieldPresented(),
"Password field does not presented!");
Assert.assertTrue(lp.
isLoginButtonPresented(),
"Login button does not presented!");
}}
Если я запускаю мой TestNG пакет только с LoginTest - он работает правильно. Но если я попробую запустить все мои тесты по набору, LoginPage - прошло, а LogoutPage имеет NullPointerException с помощью метода navigate(). Как я могу это исправить? Мой люкс:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Selenium Web Driver" parallel="methods" thread-count="3">
<test name="Selenium">
<classes>
<class name="functional.LoginTest"/>
<class name="functional.LogoutTest"/>
</classes>
</test>
</suite>
какой элемент дал вам это NullPointerException? –
@YuZhang 'driver.get (url);' – Giymose