如何在selenium中的另一个类中使用类的实例

时间:2015-01-14 11:19:19

标签: java selenium webdriver

Login.java

public class Login_Details {
    public static WebDriver dr;
    public void verifyLogin() throws Exception {
        dr= new FirefoxDriver();
        dr.get("http://www.nexterp.in:9992/NextERPQA/nerp/login");
        FileInputStream fi= new FileInputStream("C:\\NexterpProject\\Next_Testdata\\src\\Testdata.xls");
        Workbook wb= Workbook.getWorkbook(fi);
        Sheet s= wb.getSheet(0);
        dr.findElement(By.id("userName")).sendKeys(s.getCell(0,1).getContents());
        dr.findElement(By.id("password")).sendKeys(s.getCell(1,1).getContents());
        dr.findElement(By.xpath(".//*[@id='loginForm']/a")).click();
        Thread.sleep(3000);
        System.out.println("Thank you for Logging in");
    }

和 的 Logout.java

public class Logout{
public static WebDriver dr;

public void comesOut() throws Exception{
    Thread.sleep(1000);
    dr.findElement(By.xpath("html/body/div[1]/div/div/div/div[2]/div/a[2]")).click();
    System.out.println("Thank you for clicking on Logout");
    dr.quit();
    }
}

在上述两个程序中,为 webdriver dr创建了一个实例; 我的问题是,不是每次都为新课程创建新实例,而是告诉我如何在我的程序中使用 dr

4 个答案:

答案 0 :(得分:0)

您可以将静态对象的初始化从方法移动到变量声明E.g.

 public static WebDriver dr = new FirefoxDriver();

然后在

之类的地方重复使用它
Login_Details.dr

答案 1 :(得分:0)

在初始化阶段制作驱动程序。

public static WebDriver dr = new FirefoxDriver();

答案 2 :(得分:0)

你可以扩展" Login.java" class in" Logout.java" 如下所示(并且也在Logout类中导入Login类):

public class Logout extends Login

然后,您可以直接在" Logout.java"

中使用dr

答案 3 :(得分:0)

创建一个BaseClass,其中包含驱动程序初始化,驱动程序为static。将BaseClass扩展到每个类并重用驱动程序对象。

public class BaseClass{
    static WebDriver driver;
    .
    .
    .
}

在Login_Details中

public class Login_Details extends BaseClass{
    public void verifyLogin() throws Exception {
        driver= new FirefoxDriver();
        driver.get("http://www.nexterp.in:9992/NextERPQA/nerp/login");
        <your code>
    }
}

和Logout.java

public class Logout extends BaseClass{
    public void comesOut() throws Exception{
        driver.findElement(By.xpath("html/body...")).click();
        <your code>
    }
}

如果您不想让驱动程序保持静态,那么您最好遵循PageObject设计模式。使用它可以在不扩展BaseClass的情况下提供代码。

在Login_Details中

public class Login_Details{
    WebDriver driver = null;
    public Logout verifyLogin() throws Exception {
        driver= new FirefoxDriver();
        driver.get("http://www.nexterp.in:9992/NextERPQA/nerp/login");
        <your code>
        return new Logout(driver);
    }
}

和Logout.java

public class Logout{
    WebDriver driver;
    public Logout(WebDriver driver) {
        this.driver = driver;
    }
    public void comesOut() throws Exception{
        driver.findElement(By.xpath("html/body...")).click();
        <your code>
    }
}

所以你的测试方法如下:

@Test
public void test1() {
    Login login = new Login();
    Logout logout = login.doLogin();
    logout.doLogout();
}