2014-09-24 50 views
2

我寫了一個小代碼在谷歌搜索中搜索多個關鍵字。但它顯示錯誤。Selenium TestNG - 具有一維數組的DataProvider

我的編碼如下:

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] 
+0

請註明的答案是正確的,如果是這樣的話。這會給我25點聲望點)。 – luboskrnac 2014-09-24 09:19:26

回答

1

的問題是完全錯誤信息說什麼。您需要提供Object[][]Iterator<Object []>

第一維是測試用例(或者如果您想要測試運行)。 第二維是參數索引。

所以你DataProvider應該是:

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

謝謝ikrnac :) – Saranga 2014-09-24 10:40:49

+0

也許我沒有得到你想要做的。我的校正的DataProvider的測試方法將被調用3次。每次用不同的字。這就是TestNg參數化測試支持的設計方法。 – luboskrnac 2014-09-24 11:44:50

+0

@Saranga,你能否將評論中的代碼粘貼到你的問題中,所以它會被縮進和閱讀? – luboskrnac 2014-09-24 11:47:12