0

我用谷歌搜索了很多,但找不到路?

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

有人可以帮我吗?

4

3 回答 3

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您可以说应该将巫婆参数传递给构造函数。在这种情况下,ChromeDriver 和 FirefoxDriver。

于 2013-09-27T12:10:05.870 回答
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>  
于 2013-09-27T13:45:34.757 回答
0

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

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

TestChrome TestFirefox TestInternetExplorer

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

这使我可以使用排除和包含规则将我想在某些浏览器上运行的测试选择性地过滤到不同的 Jenkins 作业中。由于 IE 测试非常缓慢,这使我们能够使用 chrome 测试我们的生产环境,以验证所有部署是否正确。

于 2013-11-25T21:39:38.757 回答