使用Java进行多个Selenium参数化Web测试

时间:2014-05-07 12:22:04

标签: java selenium testing junit webdriver

似乎我不够聪明自己搞清楚 - 我安装了Eclipse Kepler,使用了jUnit 4.11,selenium-java 2.41和一个用于selenium的mozilla插件。

一切都很棒,一切(此刻)都很棒。 我的目标是创建一个测试,每次使用第二个String []数组元素重复n次。例如:

`@Test
public void testGoogleSearch() throws Exception {
 driver.get(baseUrl);
 driver.findElement(By.id("gbqfq")).clear();
 driver.findElement(By.id("gbqfq")).sendKeys("Find me"); // Input text from String array here
 driver.findElement(By.id("gbqfb")).click();

 try {
     assertEquals("Find me", driver.findElement(By.id("gbqfq")).getAttribute("value"));
 } catch (Error e) {
     verificationErrors.append(e.toString());
 }
}`

如您所见,有静态“找我”文字。我想,我的测试将运行5次,每次输入更改为早期定义的数组元素。

我该怎么做?有线索吗?我读过有关参数化测试的内容,但它确实是我需要的吗?我没有发现任何有关多次重复的内容。

任何帮助都会很棒。谢谢。

1 个答案:

答案 0 :(得分:1)

已阅读有关参数化测试的信息,但它确实是我需要的吗?

是的,这正是您所需要的。 Parameterized.class

@RunWith(Parameterized.class)
public class GoogleSearchClass {

    private String searchString;
    private String expectedString;
    public GoogleSearchClass (String srch, String expect){
        searchString = srch;
        expectedString = expect;
    }


    @Parameterized.Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][]{
                {"search1", "expected1"}, {"search2", "expected2"}, {"search3", "expected3"}
        });
    }

    @Test
    public void testGoogleSearch() throws Exception {
        driver.get("http://google.com");
        driver.findElement(By.id("gbqfq")).clear();
        driver.findElement(By.id("gbqfq")).sendKeys(searchString); // Input text from String array here
        driver.findElement(By.id("gbqfb")).click();

        try {
         //   Assert.assertEquals(expectedString, driver.findElement(By.id("gbqfq")).getAttribute("value"));
        } catch (AssertionError e) {
        }
    }
}