![](/img/trans.png)
[英]How to read and store data from excel using java for selenium?
[英]Selenium Webdriver - Java - How to store a value read from excel in temporary variable
我想为一个问题创建多个答案,在excel中,我有3行,其中包含问题1的答案1,答案2和答案3。我想根据问题名称重复3次答案循环。 由于我使用Apache POI从excel检索值,因此我的代码对于第一行效果很好,但是当它移至第二行时,它也会尝试输入问题。
我想将第1行的问题名称存储在临时变量中,当循环到达第二行时,应将临时变量中的值与第二行问题名称进行比较。 如果问题名称相同,则不应重复输入问题,代码应仅创建答案。 您能帮上忙吗? 以下是我使用的代码
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
我不确定在阅读每个excel行之后您到底想达到什么目的。 根据您对问题的描述,这是一个可能的解决方案。 请注意有关String比较的注释,这本身可能就是错误,而不知道代码在其中的实际作用。
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
简单的方法是仅创建一个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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.