2016-06-21 7 views
0

5つのテキストフィールドをパラメータ化し、Jxlパラメータ化を使用して1つのボタンを押す必要があります。私は2つだけのテキストボックスを行っている、私はこれらの5つのテキストボックスを同時にパラメータ化する方法を得ることができません。2つ以上のテキストボックスをパラメータ化する方法

public class test { 

    public static void main(String[] args) throws InterruptedException, BiffException, IOException { 
     // TODO Auto-generated method stub 

     String FilePath = "F:/ISTP Testing/Module 2/Seleniume/project/Spaco_DataEntryTest_ContactPage.xls"; 
     FileInputStream fs = new FileInputStream(FilePath); 
     Workbook wb = Workbook.getWorkbook(fs); 
     // TO get the access to the sheet 
     Sheet sh = wb.getSheet("Sheet1"); 

     String BaseURL="http://istp.in/changathionlinebeta/contact_us.php"; 
     WebDriver wd=new FirefoxDriver(); 
     wd.get(BaseURL); 


     // To get the number of rows present in sheet 
     int totalNoOfRows = sh.getRows(); 
     // To get the number of columns present in sheet 
     int totalNoOfCols = sh.getColumns(); 
     for (int row = 1; row < totalNoOfRows; row++) { 

      for (int col = 0; col < totalNoOfCols; col++) { 
       System.out.print(sh.getCell(col, row).getContents() + "\t"); 
       Thread.sleep(3000); 
       if(col%2==0) 
       { 
        wd.findElement(By.id("name")).sendKeys(sh.getCell(col, row).getContents()); 
       }else{ 
        wd.findElement(By.id("email")).sendKeys(sh.getCell(col, row).getContents()); 
       } 
      } 
      System.out.println(); 
     } 

     wd.close(); 
     System.exit(0); 
    } 
} 

My Text Boxes

+0

なぜ残りのフィールドには使えないのですか? –

答えて

1

あなたはこれを試すことができます -

for (int row = 0; row < totalNoOfRows; row++) { 

    for (int col = 0; col < totalNoOfCols; col++) { 
     System.out.print(sh.getCell(col, row).getContents() + "\t"); //don't understand what you want to achieve using this 
     Thread.sleep(3000); 
     switch(col){ 
      Case 0: wd.findElement(By.id("name")).sendKeys(sh.getCell(col, row).getContents()); 
        break; 
       Case 1: wd.findElement(By.id("email")).sendKeys(sh.getCell(col, row).getContents()); 
        break; 
       Case 2: wd.findElement(By.id("phone")).sendKeys(sh.getCell(col, row).getContents()); 
        break; 
       Case 3: wd.findElement(By.id("mob")).sendKeys(sh.getCell(col, row).getContents()); 
        break; 
       Case 4: wd.findElement(By.id("address")).sendKeys(sh.getCell(col, row).getContents()); 
        break; 

    } 
} 
} 
+1

に挿入すると便利です。このソリューションはあなたのために働いていたかもしれませんが、理想的には、このページのための別のクラスを作成する必要があります。コード、データをより再利用可能で保守しやすくなります。 – vv88

2

あなたがについてsingle responsibility principleを聞いたことがありますか?責任を別々の方法に分けるならば、あなたのコードはずっと保守しやすく、読みやすく、拡張可能になります。

class Test{ 
     List<String> getNamesFromSheet(){ ... 
     List<String> getEmailsFromSheet(){ ... 
     List<String> getPhonesFromSheet(){ ... 
     List<String> getMobFromSheet(){ ... 
     List<String> getAdressFromSheet(){ ... 
     void fillInTable(){ 
      for(int i = 0; i < 5; i++){ 
       wd.findElement(By.id("name")).sendKeys(getNamesFromSheet().get(i)); 
       wd.findElement(By.id("email")).sendKeys(getEmailsFromSheet().get(i)); 
       //... 

      } 
     } 
+0

新しいタイプのSubmitPageObjectを作成し、すべてをList

3

Rudziankoŭ右けど。

1>ワークブックから情報を取得し、すべてのプログラムのプロパティ(名前、電子メール、アドレス...)

2>メソッドを作成してclass SubmitPageObjectを作成し、List<SubmitPageObject> spo = new List<SubmitPageObject>();

.. 
spo.Add(new SubmitPageObject(name,email,...)) 
に割り当て

3>最後のステップは、リスト上のループにあると:

wd.findElement(By.id("name")).sendKeys(spo[i].name); 
wd.findElement(By.id("email")).sendKeys(spo[i].email); 
wd.findElement(By.id("phone")).sendKeys(spo[i].phone); 

...

+0

+1。これは頻繁に使用されるパラメータ化の最良の方法です。しかし、質問者は彼のコードから見られるようにPOMを使用していません。だから私は彼のロジックをswitch文の周りに再構築した。 – vv88

関連する問題