我们可以在不使用selenium网格的情况下使用selenium webdriver在不同的浏览器上运行我们的测试套件吗?

时间:2013-09-27 11:11:31

标签: selenium selenium-webdriver testng

我用谷歌搜索了但是找不到路?

我想在不同浏览器上运行我的测试套件而不更改excel或xml文件中的browsert名称。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

如果您使用的是JUnit,可以使用@RunWith(value = Parameterized.class)

@RunWith(value = Parameterized.class)
public class StackoverflowTestNoGrid {
    private final WebDriver driver;

    public StackoverflowTestNoGrid(final WebDriver driver) {
        this.driver = driver;
    }

    @Parameters
    public static Collection<Object[]> driverToTest() {
        return Arrays.asList(new Object[][] { { new ChromeDriver() }, { new FirefoxDriver() } });
    }

    @Test
    public void titleTest() {
        this.driver.get("http://stackoverflow.com/");
        // ... do some stuff
        // ... assert smth
    }
}

在使用@Parameters注释的方法中,您可以说应该将女巫参数传递给constuctor。在这种情况下,ChromeDriver和FirefoxDriver。

答案 1 :(得分:0)

此博客可能有用。

http://santoshsarmajv.blogspot.in/2013/02/passing-parameters-to-testcase-using.html

<强> ExampleTestCase.java

   public class ExampleTestCase   
   {  
     private static WebDriver driver;
     private String browserName;
     @Parameters({"browser,version"})
     @BeforeClass
     public void beforeClass(String browser,String version)
     {
          driver=getDriverInstance(browser,version);
          browserName=browser;
     }
     @BeforeTest
     public void beforeTest()
     {
     }  
     @Test
     public void f()
     {
          //your test code here
     }
    @AfterTest
    public void afterTest()
    {
        //along with your failure messages append browserName to know in which browser it has failed
        System.out.println("Test failed in "+browserName);
    }
    @AfterClass
    public void afterClass()
    {

        driver.quit();
    }
}

<强>的testng.xml

<?xml version="1.0" encoding="UTF-8"?>  
   <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">  
   <suite thread-count="2" name=MyTestSuite" parallel="tests">  
       <test name="RunInFirefox" preserve-order="false">
          <parameter name="browser" value="firefox">
          <parameter name="version" value="8"/>
          <parameter name="profile" value="default">
                <classes preserve-order="true">  
                      <class name="com.test.TestCase1"/>  
                      <class name="com.test.TestCase2"/>  
                      <class name="com.test.TestCase3"/>  
                </classes>  
       </test>  
       <test name="RunInChrome" preserve-order="false">
          <parameter name="browser" value="chrome">
          <parameter name="version" value="21"/>  
               <classes preserve-order="true">  
                    <class name="com.test.TestCase1"/>  
                    <class name="com.test.TestCase2"/>  
                    <class name="com.test.TestCase3"/>  
               </classes>  
        </test>  
</suite>  

答案 2 :(得分:0)

在与Jenkins服务器集成时,我有一套不寻常的要求。

我将所有测试都放在抽象类中,然后为每个我想要测试的浏览器创建一个类

TestChrome TestFirefox TestInternetExplorer

然后,当测试失败时,您可以将浏览器视为相关包中类名的一部分。

这允许我使用排除和包含规则将我想要使用某些浏览器运行的测试过滤到不同的Jenkins作业中。由于IE测试速度非常慢,因此我们可以使用chrome测试我们的生产环境,以验证所有部署是否正确。