2016-04-15 144 views
0

我想學習Selenium WebDriver,並有一個問題,我不能長時間解決。這些是我在Java中的第一步,我感謝您的幫助。 我有一個代碼將數據庫表中的值彙集起來。這段代碼應該把這個查詢結果放到一個數組中,並且使用每一行(For循環)重複執行它,但我不知道該怎麼做。目前它彙集所有行,但是隻重複運行最後一行(5次)。你能幫我創建for循環的正確數組嗎?坦克提前了很多!這裏是我的代碼:如何將sql查詢結果放入數組 - Selenium Webdriver?

public class DB_TFETCHdata { 
ProfilesIni listProfiles = new ProfilesIni(); 
FirefoxProfile profile = listProfiles.getProfile("selenium"); 
WebDriver oWD = new FirefoxDriver(profile); 

String dbZipCode; 
String dbDOBMonth; 
String dbDOBDay; 
String dbDOBYear; 
int i = 0; 

@Before

public void setUp() throws Exception{ 

oWD.get("https://www.ehealthinsurance.com/");  

String ConnStr = "jdbc:sqlserver://localhost:1433;databaseName=TestData1; user=sa; password=1";  
String DatabaseDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  
String strSQL = "Select * FROM InfoTbl"; 

    Class.forName(DatabaseDriver);  
    Connection conn = DriverManager.getConnection(ConnStr);  
    Statement st = conn.createStatement();  
    ResultSet rs = st.executeQuery(strSQL);  
    while(rs.next()){ 

     dbZipCode = rs.getString("ZipCode");     
     dbDOBMonth = rs.getString("DOB_Month");    
     dbDOBDay = rs.getString("DOB_Day");    
     dbDOBYear = rs.getString("DOB_Year"); 



     System.out.println(dbZipCode + "-" + dbDOBMonth + "-" + dbDOBDay + "-" + dbDOBYear); 


    //System.out.println("There were " + rowCount + " records."); 
    // rs.close(); 
    //st.close(); 
    //conn.close();  
} 

}

@Test 
public void testLogin() throws Exception { 


    for (int i = 1; i<5; i++){ 
     /*String strZipCode = oResultset [i][0]; 
     String strDOBMonth = oResultset [i][1]; 
     String strDOBDay = oResultset [i][2]; 
     String strDOBYear = ArrXlDataLocal [i][3];*/ 

    //new Select(oWD.findElement(By.name("insuranceType"))).selectByVisibleText("Dental"); 

    //new Select(oWD.findElement(By.name("insuranceType"))).selectByVisibleText("Dental"); 
    oWD.findElement(By.linkText("Dental")).click(); 
    Thread.sleep(4000); 
    oWD.findElement(By.id("zipCode")).clear(); 
    oWD.findElement(By.id("zipCode")).sendKeys(dbZipCode); 
    oWD.findElement(By.id("goBtn")).click(); 
    oWD.findElement(By.id("census_primary_genderMALE")).click(); 

    oWD.findElement(By.id("census_primary_month")).clear(); 
    oWD.findElement(By.id("census_primary_month")).sendKeys(dbDOBMonth); 
    oWD.findElement(By.id("census_primary_day")).clear(); 
    oWD.findElement(By.id("census_primary_day")).sendKeys(dbDOBDay); 
    oWD.findElement(By.id("census_primary_year")).clear(); 
    oWD.findElement(By.id("census_primary_year")).sendKeys(dbDOBYear); 
    oWD.findElement(By.id("census_primary_tobacco")).click(); 
    oWD.findElement(By.id("continue-btn")).click(); 
    Thread.sleep(10000); 
    String strNumOfPlans = oWD.findElement(By.cssSelector("span.text-pink")).getText(); 
    String strNumOfPlans2 = oWD.findElement(By.xpath("//*[@id='quote-title']/strong")).getText(); 

    System.out.println("Here are the " + strNumOfPlans +" bestselling plans. Plans start at " + strNumOfPlans2); 

} 
} 



@After 
public void TearDown(){ 

} 

}

回答

0

您可以使用TestNG中的數據提供程序的功能。爲dataProvider創建一個新函數,並在讀取每個記錄集時在該函數內執行數據庫讀取步驟,將值存儲在對象數組中。請參閱下面的示例代碼,未針對錯誤測試此代碼。

@DataProvider 
public Object[][] getData() 
{ 

// open DB connection, get record set and store values in array object 

//Rows - Number of times your test has to be repeated. 
//Columns - Number of parameters in test data. 
Object[][] data = new Object[3][2]; 

// you can dynamically read the rows/columns of recordset instead of hardcoding(new Object[3][2]) 

// 1st row 
data[0][0] ="value1"; 
data[0][1] = "value2"; 

// similarly for all rows in the record set 

return data; 
} 


@Test(DataProvider="getData") 
public void testLogin(){ 

} 
+0

謝謝阿克巴爾。我會盡力。 –