Selenium Webdriver-Java-как сохранить значение, считанное из excel во временной переменной

Я хотел бы создать несколько ответов на вопрос, в excel у меня есть 3 строки с ответом 1 , Ответ 2 и ответ 3 На вопрос 1. Я хотел бы повторить цикл ответа 3 раза на основе имени вопроса. Поскольку я использую Apache POI для получения значения из excel, мой код хорошо работает для 1-й строки, но когда он перемещается во 2-ю строку, он пытается ввести вопрос.

Я хотел бы сохранить имя вопроса из строки 1 во временном varaible, и когда цикл попадает во 2-ю строку, он должен сравнить значение во временной переменной с именем вопроса 2-й строки. Если имя вопроса такое же, то он не должен повторять ввод вопроса, код должен создать только ответ. Пожалуйста, помогите в этом. Ниже приведен код, который я использовал

      driver.get(new URI(driver.getCurrentUrl()).resolve("/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

2 ответа

  1. Я не уверен, что именно вы пытаетесь достичь после чтения каждой строки excel. Основываясь на том, что вы описываете в своем вопросе, это возможное решение. Пожалуйста, обратите внимание на комментарии о вашем сравнении строк, которые могут быть ошибкой сами по себе, не зная, что ваш код на самом деле делает в том, если.

    driver.get(new URI(driver.getCurrentUrl()).resolve("/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
    
  2. Простой способ сделать это, просто создать ArrayListи сохранить все вопросы, которые уже были введены в приложении. Поэтому каждый раз,когда вы собираетесь ввести новый вопрос, просто проверьте, есть ли уже введенный вопрос в ArrayList, если он уже доступен, то пропустите. посмотрите на пример ниже.

    driver.get(new URI(driver.getCurrentUrl()).resolve("/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);
    
             }