我有一个需要编写的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
有人可以帮忙吗?
答案 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
}
}
我希望这涵盖了你的大部分问题。如需进一步帮助,请提供更多信息。