我只想在运行一次之后,一个接一个地在多个浏览器中运行我的webdriver脚本。在我当前的框架中,我已将所有浏览器名称保留在属性文件中,并从那里获取它并作为参数传递。但问题是这样,在一次执行中它只运行一个浏览器。如果我想在另一个浏览器中运行它,我必须传递第二个浏览器名称进行第二次执行。 我想运行一次,脚本应该为一个浏览器执行然后自动运行其他浏览器也是。我正在使用Junit。 怎么能实现这个目标?
答案 0 :(得分:0)
查看Seleniun Grid或者您可以创建一个TestSuite并使用系统属性来设置浏览器。
类似的东西:
1-使用所有测试用例创建testSuite
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({ MyClassTest.class, MySecondClassTest.class })
public class AllTests {
}
2-运行套件首先设置属性
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class MyTestRunner {
public static void main(String[] args) {
//Set browser
System.setProperty("browser","Firefox");
Result result = JUnitCore.runClasses(AllTests.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.setProperty("browser","Explorer");
Result result = JUnitCore.runClasses(AllTests.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
//.... Rest of the browsers .... //
}
}
3-使用此选项,您应该获取属性并设置测试(System.getProperty("browser");
)
public class MyClassTest{
private webDriver = new webDriver();
@Before
public void setUp(){
String browser = System.getProperty("browser");
if(browser.equals("Firefox"))
this.driver = new FirefoxDriver();
else if(browser.equals("Explorer")
this.driver = new .....
.....
}
//Your tests
@Test
-....
希望有所帮助!
答案 1 :(得分:0)
在@Morvader提到的方式实施之后,我完成了工作并且工作正常。
我找到了另一种方法来做同样的事情而不创建额外的类,即Testrunner类。
通过使用@RunWith(Parameterized.class),可以更简单的方式实现。在这种方法中不需要创建额外的TestRunner类的开销。想分享这个。
答案 2 :(得分:0)
如果您想将@RunWith(Parameterized.class)
用于测试套件(@RunWith(Suite.class)
),您会发现在标准JUnit 4中没有两者的组合。
您可以实施自己的Runner
或使用this one等扩展程序库。