【发布时间】:2016-06-21 18:38:18
【问题描述】:
我通过 Java 的 webdriver-factory 为 Selenium WebDriver 编写测试,但测试有问题。 我有这个用于测试的基类:
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!");
}}
如果我只使用 LoginTest 运行我的 testng 套件 - 它工作正常。但是,如果我尝试按套件运行我的所有测试,LoginPage - 通过并且 LogoutPage 通过 navigate() 方法具有 NullPointerException。我该如何解决? 我的套房:
<?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);
标签: java selenium selenium-webdriver