【问题标题】:Selenium TestNG - DataProvider with 1D ArraySelenium TestNG - 具有一维数组的数据提供者
【发布时间】:2015-07-25 22:22:37
【问题描述】:

我写了一个小代码来搜索谷歌搜索中的多个关键字。但它显示错误。

我的编码如下:

public class GoogleSearchDataSet {

    WebDriver driver;

    @BeforeClass
    public void setup () {
        System.setProperty("webdriver.chrome.driver","E://chromedriver.exe");
        driver=new ChromeDriver();
        driver.get("http://www.google.com");    
    }

    @AfterClass
    public void quit(){
        driver.manage().deleteAllCookies();
        driver.quit();
    }

    @DataProvider(name="mykeywordset")  
    public Object[] data(){
        return new Object []{ "Cat", "Dog", "hat" };
    }

    @Test(dataProvider="mykeywordset")
    public void search(String Word){
        WebElement txtSearch= driver.findElement(By.className("gbqfif"));
        txtSearch.sendKeys(Word);
        WebElement btnSearch = driver.findElement(By.id("gbqfba"));
        btnSearch.submit();
    }
}

显示如下错误:

SKIPPED: search
org.testng.TestNGException
Data Provider public java.lang.Object[] googleSearch.GoogleSearchDataSet.data() must return either Object[][] or Iterator<Object>[], not class [Ljava.lang.Object]

【问题讨论】:

  • 如果是这样,请将答案标记为正确。这会给我 25 点声望点 ;)。

标签: selenium testng


【解决方案1】:

问题正是错误消息所说的。您需要提供Object[][]Iterator&lt;Object []&gt;

第一个维度是测试用例(如果需要,也可以测试运行)。 第二个维度是参数索引。

所以你的DataProvider 应该是:

@DataProvider(name="mykeywordset")  
public Object[][] data(){
   return new Object [][]{ 
     { "Cat" }, 
     { "Dog" }, 
     { "hat" }
   };
}

【讨论】:

  • 也许我不明白你想要做什么。您使用我更正的 DataProvider 的测试方法将被调用 3 次。每次用不同的词。这就是 TestNg 参数化测试支持的设计方式。
  • @Saranga,您能否将评论中的代码粘贴到您的问题中,以便缩进和可读?
猜你喜欢
  • 2017-12-07
  • 2018-02-10
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多