构建我的Selenium测试

时间:2014-08-07 08:51:00

标签: java eclipse selenium selenium-webdriver

我有一个需要编写的Selenium测试用例,但在执行之前我需要从用户那里获取一些信息才能运行测试。

目前,我的代码结构如下:

public class myTest {
private WebDriver driver;

    @Before
     System.setProperty("webdriver.ie.driver",
"C:\\Users\\ktuck\\Documents\\Selenium\\Selenium Server\\IEDriverServer.exe");
        driver = new InternetExplorerDriver(); // I guess I don't need to fire this up as i'm only collecting information from the user?

    @Test

    // Code to collect user inputted data to use later in my test

    @After
    public void tearDown() throws Exception {
        driver.quit(); // Do I need this?
    }

}

我最初的想法是将集合代码放在main函数中,然后调用我的测试脚本的其余部分,该脚本将位于不同的文件中,并将收集的信息传递给它。但我不太清楚如何做到这一点,因为我对Selenium / Java很新:p

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

如果您没有使用任何测试框架,可以选择TestNG。 TestNG支持数据驱动和参数化测试。

你可以通过testng.xml传递param。 因为你正在使用maven,你可以配置maven来传递参数而不使用testng.xml。

您也可以通过maven通过命令行将params传递给TestNG,如下所示

mvn -Dtest=<testName> -D<paramName>=<paramValue>  test

如果您不想使用任何测试框架,那么您可以通过JVM arg传递参数 并使用System.getProperty("paramName")

进行检索

答案 1 :(得分:0)

考虑使用像JUnit或TestNG这样的测试框架。这将使您能够使用在实际测试之前和之后运行的方法(如上面给出的伪代码所示)。

使用这种方法,您可以在@BeforeClass方法中执行所有查找工作,并在@AfterTest方法中退出webdriver。为了保持测试类的清洁,我建议将@BeforeClass和@AfterTest移动到你继承的抽象超类。

抽象超类

public abstract class AbstractSeleniumTest {

    private WebDriver webDriver;

    @BeforeClass
    public void setup() {
       // do all the initalization stuff, e.g. system property lookup
    }

    @AfterTest(alwaysRun = true)
    public void tearDown() {
       // do all the clean-up stuff, e.g. webdriver.quit();
    }
}

测试类

@Test
public class MySeleniumTest extends AbstractSeleniumTest {

     public void testSomething() {
           // do the actual test logic
     }

}

我希望这涵盖了你的大部分问题。如需进一步帮助,请提供更多信息。