Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从excel的第一行迭代并尝试登录,然后再次迭代到第二行并使用Selenium和POI再次尝试登录?_Java_Selenium_Apache Poi - Fatal编程技术网

Java 如何从excel的第一行迭代并尝试登录,然后再次迭代到第二行并使用Selenium和POI再次尝试登录?

Java 如何从excel的第一行迭代并尝试登录,然后再次迭代到第二行并使用Selenium和POI再次尝试登录?,java,selenium,apache-poi,Java,Selenium,Apache Poi,我的场景是我有一个三行两列的excel。第一列是用户名,第二列是密码,下面有三行数据 我的目标是我的webdriver脚本读取第一行数据并尝试登录,然后读取第二行数据并再次尝试登录,依此类推。 我创建的脚本是,它读取第一个用户名并将其放入用户名文本框中,读取第一个密码并输入密码,然后尝试登录,从不转到第二行数据。我猜我在脚本中使用的中断不在正确的位置 我不知道我应该在哪里打破循环,从一排走到另一排 这是我的密码: FileInputStream loginFile = new FileInput

我的场景是我有一个三行两列的excel。第一列是用户名,第二列是密码,下面有三行数据

我的目标是我的webdriver脚本读取第一行数据并尝试登录,然后读取第二行数据并再次尝试登录,依此类推。 我创建的脚本是,它读取第一个用户名并将其放入用户名文本框中,读取第一个密码并输入密码,然后尝试登录,从不转到第二行数据。我猜我在脚本中使用的中断不在正确的位置 我不知道我应该在哪里打破循环,从一排走到另一排

这是我的密码:

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工作表将有多个用户名和密码。