我们已经在现有框架中实现了Selenium Grid(分布式测试)概念,同时实现了它产生空指针异常到目前为止,我有一个单独的包,有三个类文件(Baseclass, logclass, testcase)
基类-获取我想要的驱动程序并导航到应用程序
class Baseclass {
public WebDriver myDriver;
public static String baseUrl;
// Explicit Constructors
public Baseclass() {
baseUrl = "https://example.com/";
}
public void Navigate(String url) {
String navigateToThisUrl = baseUrl + url;
myDriver.navigate().to(navigateToThisUrl);
}
public void GetDriver() throws MalformedURLException {
threadDriver = new ThreadLocal<RemoteWebDriver>();
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
FirefoxProfile fp = new FirefoxProfile();
desiredCapabilities.setCapability(FirefoxDriver.PROFILE, fp);
desiredCapabilities.setBrowserName(DesiredCapabilities.firefox()
.getBrowserName());
myDriver = new RemoteWebDriver(new URL(
"http://localhost:5555/wd/hub"), desiredCapabilities);
}
}
并在logclass中导航到位置(QA或UAT等)
public class Loginclass extends Baseclass {
public Loginclass navigateToLogin() {
Navigate("qa");
return new Loginclass();
}
}
测试用例我们有一个测试用例并执行相同的
public class TestcaseSearch extends Loginclass {
@BeforeTest
public final void Startup() throws MalformedURLException {
Baseclass baseClass = new Baseclass();
baseClass.GetDriver;
}
@Test
public void fieldsSearch(String username, String password)
throws Exception {
Loginclass loginClass = new Loginclass();
navigateToLogin();
}
}
当执行上面的语句时,会产生一个空指针异常
基类:idsDriver.navigate().to(navigateToThisUrl);
logclass: Navigate("qa");
让我知道我该如何改正
异常输出
java.lang.NullPointerException
at com.Baseclass.Navigate(Baseclass.java:11)
at com.Loginclass.Navigate(Loginclass.java:1)
at com.TestcaseSearch.Navigate(TestcaseSearch.java:1)
at com.Loginclass.navigateToLogin(Loginclass.java:4)
at com.TestcaseSearch.fieldsSearch(TestcaseSearch.java:11)
您的myDriver
实例为空,因为您在Startup()
中创建了Baseclass
的新实例,该实例将myDriver
设置为自身而不是实际的测试类实例。
同样,您不需要在fieldsSearch
中创建新的Loginclass
,因为TestcaseSearch
是Loginclass
的子类:
public class TestcaseSearch extends Loginclass {
@BeforeTest
public final void Startup() throws MalformedURLException {
GetDriver();
}
@Test
public void fieldsSearch(String username, String password)
throws Exception {
navigateToLogin();
}
}