Java 如何从excel的第一行迭代并尝试登录,然后再次迭代到第二行并使用Selenium和POI再次尝试登录?
我的场景是我有一个三行两列的excel。第一列是用户名,第二列是密码,下面有三行数据 我的目标是我的webdriver脚本读取第一行数据并尝试登录,然后读取第二行数据并再次尝试登录,依此类推。 我创建的脚本是,它读取第一个用户名并将其放入用户名文本框中,读取第一个密码并输入密码,然后尝试登录,从不转到第二行数据。我猜我在脚本中使用的中断不在正确的位置 我不知道我应该在哪里打破循环,从一排走到另一排 这是我的密码:Java 如何从excel的第一行迭代并尝试登录,然后再次迭代到第二行并使用Selenium和POI再次尝试登录?,java,selenium,apache-poi,Java,Selenium,Apache Poi,我的场景是我有一个三行两列的excel。第一列是用户名,第二列是密码,下面有三行数据 我的目标是我的webdriver脚本读取第一行数据并尝试登录,然后读取第二行数据并再次尝试登录,依此类推。 我创建的脚本是,它读取第一个用户名并将其放入用户名文本框中,读取第一个密码并输入密码,然后尝试登录,从不转到第二行数据。我猜我在脚本中使用的中断不在正确的位置 我不知道我应该在哪里打破循环,从一排走到另一排 这是我的密码: FileInputStream loginFile = new FileInput
FileInputStream loginFile = new FileInputStream(new File("C:\\Selenium\\Input_Data\\LoginFailure.xlsx"));
//Get the workbook instance for xlsx file
XSSFWorkbook workbook = new XSSFWorkbook(loginFile);
//Get the first sheet of the xlsx file
XSSFSheet sheet = workbook.getSheet("Login");
//Iterate through each row from first sheet
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext())
{
Row row = rowIterator.next();
//For each row iterate through each columns
Iterator <Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();
if(cell.getColumnIndex()==0)
{
driver.findElement (By.id("UserName")).sendKeys(cell.getStringCellValue());
}
else
driver.findElement(By.id("Password")).sendKeys(cell.getStringCellValue());
}
break;
}
driver.findElement(By.id("LoginButton")).click();
System.out.println("**********User login failure**********");
FileInputStream loginFile=newfileinputstream(新文件(“C:\\Selenium\\Input\u Data\\LoginFailure.xlsx”);
//获取xlsx文件的工作簿实例
XSSF工作簿=新XSSF工作簿(登录文件);
//获取xlsx文件的第一页
XSSFSheet sheet=workbook.getSheet(“登录”);
//从第一张图纸开始遍历每一行
迭代器rowIterator=sheet.Iterator();
while(roweiterator.hasNext())
{
行=行迭代器。下一步();
//对于每一行,遍历每一列
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext())
{
Cell=cellIterator.next();
if(cell.getColumnIndex()=0)
{
driver.findElement(By.id(“用户名”)).sendKeys(cell.getStringCellValue());
}
其他的
driver.findElement(By.id(“密码”)).sendKeys(cell.getStringCellValue());
}
打破
}
driver.findElement(By.id(“LoginButton”)).click();
System.out.println(“**********用户登录失败**********”);
不要放break..你能试着放continue并告诉我结果吗
break将退出循环。但是,continue将转到下一个迭代。而不是break。请尝试将continue放入循环,并让我知道结果
break将退出循环。但是,continue将进入下一个迭代。在获得
用户名和密码后,您应该退出cellIterator
,以便继续行的外部循环
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();
if(cell.getColumnIndex() == 0)
{
driver.findElement (By.id("UserName")).sendKeys(cell.getStringCellValue());
}
else
{
driver.findElement(By.id("Password")).sendKeys(cell.getStringCellValue());
}
if(cell.getColumnIndex() > 0)
{
break;
}
}
在获得用户名
和密码
后,应中断单元格迭代器
,以便继续行的外部循环
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();
if(cell.getColumnIndex() == 0)
{
driver.findElement (By.id("UserName")).sendKeys(cell.getStringCellValue());
}
else
{
driver.findElement(By.id("Password")).sendKeys(cell.getStringCellValue());
}
if(cell.getColumnIndex() > 0)
{
break;
}
}
当您同时获得用户名和密码时,中断内部while循环
while (rowIterator.hasNext())
{
Row row = rowIterator.next();
//For each row iterate through each columns
Iterator <Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();
if(cell.getColumnIndex()==0)
{
driver.findElement (By.id("UserName")).sendKeys(cell.getStringCellValue());
}else if(cell.getColumnIndex()==1){
driver.findElement(By.id("Password")).sendKeys(cell.getStringCellValue());
}else{
break;
}
}
driver.findElement(By.id("LoginButton")).click();
}
while(roweiterator.hasNext())
{
行=行迭代器。下一步();
//对于每一行,遍历每一列
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext())
{
Cell=cellIterator.next();
if(cell.getColumnIndex()=0)
{
driver.findElement(By.id(“用户名”)).sendKeys(cell.getStringCellValue());
}else if(cell.getColumnIndex()==1){
driver.findElement(By.id(“密码”)).sendKeys(cell.getStringCellValue());
}否则{
打破
}
}
driver.findElement(By.id(“LoginButton”)).click();
}
当您同时获得用户名和密码时,请中断内部while循环
while (rowIterator.hasNext())
{
Row row = rowIterator.next();
//For each row iterate through each columns
Iterator <Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();
if(cell.getColumnIndex()==0)
{
driver.findElement (By.id("UserName")).sendKeys(cell.getStringCellValue());
}else if(cell.getColumnIndex()==1){
driver.findElement(By.id("Password")).sendKeys(cell.getStringCellValue());
}else{
break;
}
}
driver.findElement(By.id("LoginButton")).click();
}
while(roweiterator.hasNext())
{
行=行迭代器。下一步();
//对于每一行,遍历每一列
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext())
{
Cell=cellIterator.next();
if(cell.getColumnIndex()=0)
{
driver.findElement(By.id(“用户名”)).sendKeys(cell.getStringCellValue());
}else if(cell.getColumnIndex()==1){
driver.findElement(By.id(“密码”)).sendKeys(cell.getStringCellValue());
}否则{
打破
}
}
driver.findElement(By.id(“LoginButton”)).click();
}
以前的场景是从excel工作表读取数据,但现在我想将结果写回同一张excel工作表。我试图实现的流程是从excel中读取用户名和密码,并根据通过或失败(我将通过用户登录成功消息或用户登录失败消息ID进行验证)将其输入web中。同样的结果应输入excel工作表。我的excel工作表将有多个用户名和密码。以前的方案是从excel工作表读取数据,但现在我想将结果写回同一个excel工作表。我试图实现的流程是从excel中读取用户名和密码,并根据通过或失败(我将通过用户登录成功消息或用户登录失败消息ID进行验证)将其输入web中。同样的结果应输入excel工作表。我的excel工作表将有多个用户名和密码。