Selenium Webdriver中线程“main”java.lang.NullPointerException中的异常

时间:2014-12-08 09:22:14

标签: testing selenium selenium-webdriver

类按以下方法登录Kreato_Login(): -

public void Kreato_Login(){
        driver = new FirefoxDriver();
        baseUrl = "https://testrugtn.kreatocrm.com/";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit. SECONDS);
        driver.manage().window().maximize();
        driver.get(baseUrl + "/");
        driver.findElement(By. id("Login_txtUserName")).clear();
        driver.findElement(By. id("Login_txtUserName")).sendKeys( "saravana");
        driver.findElement(By. id("Login_txtPassword")).clear();
        driver.findElement(By. id("Login_txtPassword")).sendKeys( "5678");
        driver.findElement(By. id("Login_btnLogin")).click();

}

Class Lead作为以下方法" Lead_MandatoryCheck()": -

LoginLogout leadInstance=new LoginLogout();
public void Lead_MandatoryCheck() throws InterruptedException{
    leadInstance.Kreato_Login();
    driver1.findElement(By. xpath("//a[contains(text(),'Customers')]")).click();
    driver1.findElement(By. linkText("Leads")).click();
    //Add New
    driver1.findElement(By. cssSelector( "#ctl00_ContentPlaceHolder1_cbpSubContent_imgAddNew_CD > span.dx-vam" )).click();
    Thread.sleep(3000);
    //Save
    driver1.findElement(By. cssSelector("#ctl00_ContentPlaceHolder1_cbpAssociationNew_btnNewItemTopCreationSave_CD > span.dx-vam" )).click();
    String mandatoryPopup= driver1.switchTo().alert().getText();
    driver1.switchTo().alert().accept();
    System.out.println(mandatoryPopup);

}

我尝试从Trigger类调用上述方法,如下所示: -

public class TriggerClass {

public static void main(String[] args) throws Exception {
    // TODO Auto-generated method stub
        /*LeadCreation lc= new LeadCreation();
        lc.setUp();
        lc.testLeadCreation();
        lc.tearDown();*/
    LeadModule Lm=new LeadModule();
    Lm.Lead_MandatoryCheck();
}

当我运行" Trigger.class"

Exception in thread "main" java.lang.NullPointerException
at workflow.LeadModule.Lead_MandatoryCheck(LeadModule.java:132)
at workflow.TriggerClass.main(TriggerClass.java:13)

1 个答案:

答案 0 :(得分:1)

这是你应该如何构建你的类,成员和函数:

<强> TriggerClass.java:

public class TriggerClass {

public static WebDriver driver;

public static void main(String[] args) throws Exception {
    driver = new FirefoxDriver();
    LeadModule Lm=new LeadModule();
    Lm.Lead_MandatoryCheck();
}

<强> LeadModule.java:

public class LeadModule {

     public WebDriver driver;

     public LeadModule() {
        this.driver = TriggerClass.driver;
     }

    public void Lead_MandatoryCheck() throws InterruptedException{
        LoginLogout leadInstance = new LoginLogout();
        leadInstance.Kreato_Login();
        driver.findElement(By.xpath("//a[contains(text(),'Customers')]")).click();
        driver.findElement(By.linkText("Leads")).click();
        //Add New
        driver.findElement(By.cssSelector( "#ctl00_ContentPlaceHolder1_cbpSubContent_imgAddNew_CD > span.dx-vam" )).click();
        Thread.sleep(3000);
        //Save
        driver.findElement(By. cssSelector("#ctl00_ContentPlaceHolder1_cbpAssociationNew_btnNewItemTopCreationSave_CD > span.dx-vam" )).click();
        String mandatoryPopup= driver.switchTo().alert().getText();
        driver.switchTo().alert().accept();
        System.out.println(mandatoryPopup);

    }

<强> LoginLogout.java:

public class LoginLogout extends LeadModule {

public void Kreato_Login(){
        baseUrl = "https://testrugtn.kreatocrm.com/";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit. SECONDS);
        driver.manage().window().maximize();
        driver.get(baseUrl + "/");
        driver.findElement(By.id("Login_txtUserName")).clear();
        driver.findElement(By.id("Login_txtUserName")).sendKeys("saravana");
        driver.findElement(By.id("Login_txtPassword")).clear();
        driver.findElement(By.id("Login_txtPassword")).sendKeys("5678");
        driver.findElement(By.id("Login_btnLogin")).click();

}

}

您的Java / Selenium基础知识尚不清楚。请仔细阅读文档或查看YouTube上的相关教程。