2013-04-08 55 views
1

請找我的代碼,它不是返回數組對象的值,它的回報只有一個數組對象字符串數組方法不返回數組對象 - 硒的webdriver

public String[] verify_userRole(String[] Expected_role) { 
     String[] actual_role = new String[4]; 
     String first; 
     WebElement role_table = driver.findElement(By 
       .xpath("//*[@id='tblListView']/tbody[1]")); 
     List<WebElement> allRows = role_table.findElements(By.tagName("tr")); 

     for (WebElement row : allRows) { 
      List<WebElement> cells = row.findElements(By.tagName("td")); 

      for (WebElement cell : cells) { 
       first = cell.getText().toString(); 
       actual_role = new String[] {first}; 

       } 
     } 
     return actual_role; 
    } 

可變首次包含四個值(「名」 ,「name1」,「name2」,「name3」) 將此字符串值轉換爲數組(actual_role)後,它只返回一個值(「name」)

請澄清上述代碼的問題

回答

3

你重新初始化每個ste的字符串數組p在你的循環中。

你應該只做一次。

ArrayList<String> actual_role = new ArrayList<String>() 
    for (WebElement row : allRows) { 
     List<WebElement> cells = row.findElements(By.tagName("td")); 

     for (WebElement cell : cells) { 
      first = cell.getText().toString(); 
      actual_role.add(first); 

     } 
    } 

    return (String[]) actual_role.toArray(new String[ actual_role.size() ]); 

順便說一句,我已經轉換您的示例使用ArrayList的中介,因爲你不知道實際的數據大小,這是容易出錯的重新初始化對飛陣列。

如果您正在實施的方法的簽名不是由外部框架決定的,我建議您使用List<String>作爲返回類型而不是String[]

0

你總是實例化陣列內循環:

actual_role = new String[] {first}; 

嘗試,而不是:

actual_role[i] = first; 

當我是當前索引。

相關問題