在另一个类中调用类

时间:2016-11-09 10:52:55

标签: java selenium invoke

我正在开发一个用selenium自动测试网站的项目。这是我想要运行的主要课程:

package Login;

import static org.junit.Assert.assertTrue;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class Test{

WebDriver driver;
String baseUrl;

private StringBuffer verificationErrors = new StringBuffer();

@Test
@Parameters("browser")
public void LoginDebiteurVerkeerdPage(String browserName) {

    if(browserName.equalsIgnoreCase("firefox"))
    {
        System.setProperty("webdriver.gecko.driver","C:\\Users\\cursus\\Downloads\\geckodriver.exe");
        driver=new FirefoxDriver();
    }
    else if(browserName.equalsIgnoreCase("chrome"))
    {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\cursus\\Downloads\\chromedriver.exe");
        driver=new ChromeDriver();
    }
    else if(browserName.equalsIgnoreCase("IE"))
    {
        System.setProperty("webdriver.ie.driver", "C:\\Users\\cursus\\Downloads\\IEDriverServer_x64_2.53.1\\IEDriverServer.exe");
        driver=new InternetExplorerDriver();
    }

    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    baseUrl = "https://www.l.nl/";
    driver.get(baseUrl + "/");

    // Testscases
    Here i wanna invoke a few testcases that are in other classes.

    // For example: LoginLogout (class LoginLogout)
    // For example: LoginWrongusername (class LoginWrongusername)
    // For example: LoginWrongpassword (class Loginwrongpassword)

    driver.close();
}

}

我希望将测试用例放在另一个类中,以便它具有结构化和可维护性。

我如何在我的"测试"中调用这些类(我的测试用例)。类?

谢谢, 皮特

1 个答案:

答案 0 :(得分:0)

您可以在要在Test中执行的任何类中定义一些静态方法,并在其上添加所有方案。例如。

public class LoginLogout (){

    public static executeScenarios(Driver driver){
        //your code here
    }
}

在您的测试课程中:

LoginLogout.executeScenarios(driver);
LoginWrongusername.executeScenarios(driver); 
...

即使您可以使用场景的所有类扩展来自初始化驱动程序的公共类,并且您只需将浏览器传递给方法。

希望它可以帮到你