Selenium Webdriver如何通过获取Excel输入从表中选择记录

时间:2014-10-16 09:32:52

标签: excel selenium-webdriver

对于下面的情景,我正在努力。

  1. 一个表中100个供应商的应用程序显示记录有三列,即ID,公司名称和订阅名称。
  2. 我想从我的excel表中输入公司名称" xyz"并且使用该输入我必须单击订阅名称详细信息链接,以便应用程序将在下一页导航我。
  3. 我创建的示例代码如下:

    `public static void main(String [] args)抛出BiffException,IOException,Exception {         WebDriver driver = new FirefoxDriver();          。driver.manage()窗口()最大化();          driver.manage()超时()implicitlyWait(30,TimeUnit.SECONDS)。;          //工作簿位置          工作簿wBook = Workbook.getWorkbook(新文件(" C:\ Users \ amit.bhagwat \ Documents \ TestData \ SampleData.xls"));         //得到表格         jxl.Sheet Sheet = wBook.getSheet(0);

        //loop
        for(int i=1; i<Sheet.getRows(); i++)
    
            {
        driver.get("http://206.132.42.243/Web");
        driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
        driver.findElement(By.xpath("//input[@id='UserName']")).sendKeys(Sheet.getCell(0, i).getContents());
        driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
        driver.findElement(By.xpath("//input[@id='Password']")).sendKeys(Sheet.getCell(1, i).getContents());
        driver.findElement(By.xpath("//input[@id='Password']")).sendKeys(Sheet.getCell(1, i).getContents());
        Thread.sleep(40);
        driver.findElement(By.xpath("//input[@name='Login']")).click();
        driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
        driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
        driver.findElement(By.xpath("//a[contains(text(),'Task')]")).click();
        driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
        driver.findElement(By.xpath("//a[contains(text(),'Data Checking')]")).click();
    jxl.Sheet Sheet2 = wBook.getSheet(0); 
        WebElement kancheck = driver.findElement(By.name("Grant & Brown"));
        kancheck.click();
        System.out.println(kancheck.isSelected());
        driver.findElement(By.xpath("//a[contains(text(),'Data Checking')]")).sendKeys(Sheet2.getCell(1, i).getContents());
        Thread.sleep(40);` enter code here
    

1 个答案:

答案 0 :(得分:0)

据我所知,您正尝试从远程位置读取文件,然后从中读取信息。如果您可以使用Apache POI库在运行时读取内容,那将是一个很好的做法。

在我的项目中,我使用Apache POI库读取excel表中的所有内容,以设置变量的值。这是我如何实现它的代码片段。希望这将指导您找到合适的解决方案。 :)

    public void readExcelDoc() throws FileNotFoundException, IOException
{

    POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("excelDoc//scripts.xls"));
    HSSFWorkbook wb = new HSSFWorkbook(fs);
    HSSFSheet sheet = wb.getSheetAt(0);
    HSSFRow row = null;
    HSSFCell cell = null;

    int rows = 0; // No of rows
    //      rows = sheet.getPhysicalNumberOfRows();
    rows = sheet.getLastRowNum();

    int cols = 2; // No of columns
    int tmp = 0;

    // This trick ensures that we get the data properly even if it doesn't start from first few rows
    for(int i = 0; i < 10 || i < rows; i++) {
        row = sheet.getRow(i);
        if(row != null) {

            tmp = sheet.getRow(i).getPhysicalNumberOfCells();

            if(tmp > cols) cols = tmp;
        }

    }
    int testRowNo = 0;
    String rowName = "Test Name";
    String columnValue = " ";
    //Iterate through Row and columns here. Excluding 1st row for title names
    for(int r = 1; r <= rows; r++) {

        row = sheet.getRow(r);
        if(row != null) {
            //Browse through columns using c
            for(int c = 0; c < cols; c++) {                     
                if(c==0) //Only taking data from Cell 0; Ignoring any other inputs
                {           
                    cell = row.getCell((short)c);
                    try
                    {
                        if(cell.getStringCellValue().contains(rowName)) 
                        {           
                            testRowNo =row.getRowNum();
                        }   

                    if(testRowNo > 0 )
                    {
                        if(cell.getColumnIndex() == 0 && row.getRowNum() > testRowNo && cell.getStringCellValue().length() !=0)
                        {
                            try{
                                String cellValue = cell.getStringCellValue().toLowerCase();
                                //System.out.println(cellValue);
                                scriptType.add(cellValue);
                            }
                            catch(IllegalStateException e)
                            {
                                e.printStackTrace();
                                scriptType.add(cell.getStringCellValue());
                            }
                        }
                    }
                    }
                    catch(NullPointerException e)
                    {

                    }

                }
                if(c==1)
                {
                    cell = row.getCell((short)c); //this sets the column number
                    if(testRowNo == 0)
                    {       
                        try{
                            String cellValue = cell.getStringCellValue();
                            //System.out.println(cellValue);
                            columnValue = cellValue;
                        }
                        catch(IllegalStateException e)
                        {                           
                            String cellValue = cell.toString();
                            columnValue = cellValue;                                            
                        }
                        catch(NullPointerException e)
                        {
                            String cellValue = nodata;
                            columnValue = cellValue;
                        }
                    }
                }
                if(c==2)
                {
                    cell = row.getCell((short)c); //this sets the column number
                    if(testRowNo == 0)
                    {

                        try{
                            String cellValue = cell.getStringCellValue();
                            //System.out.println(cellValue);
                            inputParameters.put(cellValue, columnValue);
                        }
                        catch(IllegalStateException e)
                        {                           
                            String cellValue = cell.toString();
                            inputParameters.put(cellValue, columnValue);                                        
                        }
                        catch(NullPointerException e)
                        {
                            String cellValue = nodata;
                            inputParameters.put(cellValue, columnValue);
                        }
                    }
                }

            }
        }
    }
    System.out.println("---------The parameters set from excel are :  ---------");
    @SuppressWarnings("rawtypes")
    Iterator iterator = inputParameters.keySet().iterator();  

    while (iterator.hasNext()) {  
        String key = iterator.next().toString();  
        String value = inputParameters.get(key).toString();  
        System.out.println(key + " : " + value);  
    } 
}