硒网格实现与现有框架产生一个空指针异常



我们已经在现有框架中实现了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,因为TestcaseSearchLoginclass的子类:

public class TestcaseSearch extends Loginclass {
    @BeforeTest
    public final void Startup() throws MalformedURLException {
        GetDriver();        
    }       
    @Test
    public void fieldsSearch(String username, String password)
            throws Exception {      
        navigateToLogin();
    }
}

相关内容

最新更新