2016-11-09 5 views
0

質問に複数の回答を作成したい、Excelで質問1の回答1、回答2、回答3の3行があります。質問名に基づいて回答ループを3回繰り返します。私はApache POIを使用してExcelの値を取得しているので、私のコードは1行目にはうまくいきますが、2行目に移動すると質問も入力しようとします。Selenium Webdriver - Java - 一時変数でexcelから読み取った値を保存する方法

1行目の質問名を一時的に保存したいと思います。ループが2行目になると、2行目の質問名と一時変数の値を比較する必要があります。質問名が同じであれば、質問の入力を繰り返さないでください。コードは回答のみを作成する必要があります。あなたはこれを助けてくれますか?以下は私が使用したコードです

 driver.get(new URI(driver.getCurrentUrl()).resolve("https://stackoverflow.com/questions/question/create").toString()); 
       WaituntilElementpresent.isExist(); 

       for (int j=1; j <= sheet1.getLastRowNum(); j++) 
       { 
        String question_name = sheet1.getRow(j).getCell(0).getStringCellValue(); 
        String question_text = sheet1.getRow(j).getCell(1).getStringCellValue(); 
        String question_type = sheet1.getRow(j).getCell(2).getStringCellValue(); 
        String question_naire = sheet1.getRow(j).getCell(3).getStringCellValue(); 
        String answer_name = sheet1.getRow(j).getCell(4).getStringCellValue(); 
        String answer_value_fillup = sheet1.getRow(j).getCell(5).getStringCellValue(); 
        int answer_value_int = (int) sheet1.getRow(j).getCell(6).getNumericCellValue(); 
        double answer_value_deci = sheet1.getRow(j).getCell(7).getNumericCellValue(); 
        String answer_weight = sheet1.getRow(j).getCell(8).getStringCellValue(); 
        String answer_comparison = sheet1.getRow(j).getCell(9).getStringCellValue(); 
        String response_text = sheet1.getRow(j).getCell(10).getStringCellValue(); 
        String option_text = sheet1.getRow(j).getCell(11).getStringCellValue(); 
        String option_correct = sheet1.getRow(j).getCell(12).getStringCellValue(); 
        WaituntilElementpresent.isExist(); 

        //Boolean ques_name = driver.getPageSource().matches(question_name); 
        String ques_name= driver.findElement(By.id("name")).getText(); 
       //String ques_name1= sheet1.getTopRow().getCell(0).getStringCellValue();; 
        WaituntilElementpresent.isExist(); 
        System.out.println("Question name from Webpage -->"+ques_name); 
        System.out.println("Excel Question name -->"+question_name); 
        Thread.sleep(5000); 

        if (ques_name != question_name) 
         { 
          //Call the method 
          add_question_page.Add_Question_MI(driver,question_name,question_text,question_type,question_naire); 

          WaituntilElementpresent.isExist(); 

         } //for if 

        String parentWindowHandler = driver.getWindowHandle(); 

        add_question_page.Add_Answer_MI(driver); 

        WaituntilElementpresent.isExist(); 

        CallAnswer(driver); 

        WaituntilElementpresent.isExist(); 

        CallAnswerbasedonQuestiontype(driver,question_type, answer_name,answer_value_fillup,answer_value_int,answer_value_deci,answer_weight,answer_comparison,response_text,option_text, option_correct); 

        WaituntilElementpresent.isExist(); 

        add_question_page.Save_Answer_MI(driver,parentWindowHandler); 

      } //for j 

答えて

0

簡単な方法は、ArrayListを作成して、アプリケーションにすでに入力されているすべての質問を保存することです。したがって、新しい質問を入力するたびに、既に入力されている質問が既にArrayListにあるかどうかを確認してください。以下の例を見てください。

driver.get(new URI(driver.getCurrentUrl()).resolve("https://stackoverflow.com/questions/question/create").toString()); 
      WaituntilElementpresent.isExist(); 
      List<String> enteredQuestions = new ArrayList<String>(); 
      for (int j=1; j <= sheet1.getLastRowNum(); j++) 
      { 
      /*All your logics go here*/ 

       if (!enteredQuestions.contains(question_name)) 
        { 
       add_question_page.Add_Question_MI(driver,question_name,question_text,question_type,question_naire); 
       enteredQuestions.add(question_name); 
       WaituntilElementpresent.isExist(); 

       } //for if 

       String parentWindowHandler = driver.getWindowHandle(); 

       add_question_page.Add_Answer_MI(driver); 

       WaituntilElementpresent.isExist(); 

       CallAnswer(driver); 

       WaituntilElementpresent.isExist(); 

       CallAnswerbasedonQuestiontype(driver,question_type, answer_name,answer_value_fillup,answer_value_int,answer_value_deci,answer_weight,answer_comparison,response_text,option_text, option_correct); 

       WaituntilElementpresent.isExist(); 

       add_question_page.Save_Answer_MI(driver,parentWindowHandler); 

     } 
+0

ありがとうSudharsan !!それは働いた – Selvi

+0

うれしい:) –

0

各エクセルの行を読んだ後に達成しようとしていることが正確ではありません。あなたの質問にあなたが何を記述しているかに基づいて、これは可能な解決策です。文字列の比較に関するコメントをメモしておいてください。これは、エラーがそれ自体で発生している可能性があります。

driver.get(new URI(driver.getCurrentUrl()).resolve("https://stackoverflow.com/questions/question/create").toString()); 
      WaituntilElementpresent.isExist(); 
      String prevQuestionName=null; 
      for (int j=1; j <= sheet1.getLastRowNum(); j++) 
      { 
       String question_name = sheet1.getRow(j).getCell(0).getStringCellValue(); 
       String question_text = sheet1.getRow(j).getCell(1).getStringCellValue(); 
       String question_type = sheet1.getRow(j).getCell(2).getStringCellValue(); 
       String question_naire = sheet1.getRow(j).getCell(3).getStringCellValue(); 
       String answer_name = sheet1.getRow(j).getCell(4).getStringCellValue(); 
       String answer_value_fillup = sheet1.getRow(j).getCell(5).getStringCellValue(); 
       int answer_value_int = (int) sheet1.getRow(j).getCell(6).getNumericCellValue(); 
       double answer_value_deci = sheet1.getRow(j).getCell(7).getNumericCellValue(); 
       String answer_weight = sheet1.getRow(j).getCell(8).getStringCellValue(); 
       String answer_comparison = sheet1.getRow(j).getCell(9).getStringCellValue(); 
       String response_text = sheet1.getRow(j).getCell(10).getStringCellValue(); 
       String option_text = sheet1.getRow(j).getCell(11).getStringCellValue(); 
       String option_correct = sheet1.getRow(j).getCell(12).getStringCellValue(); 
       WaituntilElementpresent.isExist(); 

       //Boolean ques_name = driver.getPageSource().matches(question_name); 
       String ques_name= driver.findElement(By.id("name")).getText(); 
      //String ques_name1= sheet1.getTopRow().getCell(0).getStringCellValue();; 
       WaituntilElementpresent.isExist(); 
       System.out.println("Question name from Webpage -->"+ques_name); 
       System.out.println("Excel Question name -->"+question_name); 
       Thread.sleep(5000); 
       if(prevQuestionName == null || !prevQuestionName.equals(question_name)) { 
        //fill in question 
       } 

       //use String's .equals() method instead of != here. 
       if (ques_name != question_name) 
        { 
         //Call the method 
         add_question_page.Add_Question_MI(driver,question_name,question_text,question_type,question_naire); 

         WaituntilElementpresent.isExist(); 

        } //for if 

       String parentWindowHandler = driver.getWindowHandle(); 

       add_question_page.Add_Answer_MI(driver); 

       WaituntilElementpresent.isExist(); 

       CallAnswer(driver); 

       WaituntilElementpresent.isExist(); 

       CallAnswerbasedonQuestiontype(driver,question_type, answer_name,answer_value_fillup,answer_value_int,answer_value_deci,answer_weight,answer_comparison,response_text,option_text, option_correct); 

       WaituntilElementpresent.isExist(); 

       add_question_page.Save_Answer_MI(driver,parentWindowHandler); 

     } //for j 
関連する問題