当前位置: 首页 > 知识库问答 >
问题:

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

澹台展鹏
2023-03-14

我在为下面的场景挣扎。

    null

`public static void main(String[]args)抛出BiffException,IOException,Exception{WebDriver driver=new FirefoxDriver();driver.manage().window().maximate();driver.manage().timeouts().implicitlywait(30,timeunit.seconds);//Workbook location Workbook wBook=Workbook.getworkbook(新文件(“

    //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个答案

王杰
2023-03-14

据我所知,您试图从远程位置读取文件,然后从中读取信息。如果您能在运行时使用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);  
    } 
}
 类似资料:
  • 问题内容: 我有一个这样的SQL语句: 编辑 : 此SQL查询给出以下结果: 但是由于某些要求,我需要这样的输出: 意思是说每个位置需要输出4次。 请帮助如何获得相同的。 问题答案: 如果不是一个常数,而是(如@xQbert指出/要求的)是表的行数,则可以使用以下命令: 如果没有任何查询(但是很复杂),则可以将其用于4个副本: 或此副本:

  • 问题内容: 我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和我的方法中) 它以空指针失败。我也尝试了没有。 现在,如果我在我的方法中执行此操作,则一切正常,然后选择正确的项目 这是该控件的实际网页摘要(已编辑以保护无辜者) 让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。 问题答案: 那是因为该类具有以下构造函数: 见J

  • 假设我们有一些s属于同一,当用户点击时,它被选中了。我想添加一个功能,当用户点击已经选中的时,它会被取消选中,即整个将不会选中。我已经搜索了提示使用的方法,method,clearSelection。但问题是,当用户单击已选择的JRadioButton时,它不会生成任何,而该事件是通过单击其他未选择的生成的。

  • 问题内容: 我有以下表名称模板,例如,一对夫妇,名字和数字相同:fmj.backup_semaforo_geo_THENUMBER,例如: 可以说我需要从每个表中选择一列,该表以’fmj.backup_semaforo_geo_%’过滤器成功执行,我尝试这样做: 但是我正在获取all_tables表名称数据: 我如何在不获取all_tables输出的情况下实现这一目标? 谢谢。 问题答案: 大概您

  • 问题内容: 我在python大熊猫中有一个数据框。数据框的结构如下: 我想选择以d开头的列。有没有一种简单的方法可以在python中实现。 问题答案: 您可以使用这种方式: 这个想法是通过选择列

  • 我正在尝试从网页上的表格中提取数据。到目前为止,我已经能够从标题标签中提取数据——但不能提取表格数据。如何使用下面显示的源来实现这一点? 资料来源: 编辑——回应马泰·斯皮利的以下评论: ^-(导致错误:android.view.ViewRootImpl$CalledFromErrorThreadException:只有创建视图层次结构的原始线程才能接触其视图)