2016-04-15 4 views
0

Ich versuche Selenium WebDriver zu lernen und habe eine Frage, die ich lange nicht lösen kann. Dies sind meine ersten Schritte in Java und ich schätze Ihre Hilfe. Ich habe einen Code, der die Werte aus der DataBase-Tabelle zusammenfasst. Dieser Code sollte dieses Abfrageergebnis in ein Array einfügen und es wiederholt mit jeder nächsten Zeile (For-Schleife) ausführen, aber ich weiß nicht, wie es geht. Derzeit werden alle Zeilen zusammengefasst, aber nur die letzte Zeile wiederholt (5 Mal). Könnten Sie mir bitte helfen, ein korrektes Array mit for-Schleife zu erstellen? Tanks im Voraus! Hier ist mein Code:Wie sql Abfrage Ergebnis in ein Array - 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(){ 

} 

}

Antwort

0

Sie DataProvider- Merkmal TestNG verwenden können. Erstellen Sie eine neue Funktion für dataProvider, und führen Sie in dieser Funktion die Schritte zum Abrufen der Datenbank aus, während Sie beim Lesen jedes Recordsets die Werte im Objektarray speichern. Siehe unter Beispielcode, habe diesen Code nicht auf Fehler getestet.

@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

Dank Akbar. Ich werde es versuchen. –

Verwandte Themen