如何在不改变参数的情况下在多个浏览器中运行Selenium webdriver脚本 - java

时间:2014-04-21 14:34:29

标签: selenium junit

我只想在运行一次之后,一个接一个地在多个浏览器中运行我的webdriver脚本。在我当前的框架中,我已将所有浏览器名称保留在属性文件中,并从那里获取它并作为参数传递。但问题是这样,在一次执行中它只运行一个浏览器。如果我想在另一个浏览器中运行它,我必须传递第二个浏览器名称进行第二次执行。 我想运行一次,脚本应该为一个浏览器执行然后自动运行其他浏览器也是。我正在使用Junit。 怎么能实现这个目标?

3 个答案:

答案 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等扩展程序库。