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

用 Excel Apache POI 编写

钦良弼
2023-03-14

我已经创建了从excel中获取元素的脚本。

这是我的剧本

public void readExcel() throws BiffException, IOException {
        String script = "return rlSerial;";
        WebDriver driver;
        String baseUrl;
        System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.Jdk14Logger");
        driver = new FirefoxDriver();
        baseUrl = "http://website.com/";
        String SiteWindow = driver.getWindowHandle();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        String FilePath = "D:\\TestData.xls";
        FileInputStream fs = new FileInputStream(FilePath);
        Workbook wb = Workbook.getWorkbook(fs);

        // TO get the access to the sheet
        Sheet sh = wb.getSheet(0);

        // To get the number of rows present in sheet
        int totalNoOfRows = sh.getRows();
        int totalNoOfCol=sh.getColumns();
        sh.getColumns();

        for (int row =1; row < totalNoOfRows; row++)
        {
            for (int col = 0; col < totalNoOfCol; col++){   
                if (col == 0)
                {
                    System.out.println("Check for Elink "+sh.getCell(col,row).getContents());
                }
                if (col == 1) {
                    driver.get(baseUrl +sh.getCell(col,row).getContents());
                }
                if (col ==2 ) {
                    driver.findElement(By.xpath(sh.getCell(col,row).getContents())).click();
                    for (String PromoWindow : driver.getWindowHandles()) {
                        driver.switchTo().window(PromoWindow); // switch focus of WebDriver to the next found window handle (that's your newly opened window)
                    }

                }
                if (col ==3 ) {
                    String exSerial  = (String) ((JavascriptExecutor)driver).executeScript(script);
                    System.out.println("Actual rlSerial = "+ exSerial   + "\t" +"Excpected rlSerial = "+sh.getCell(col,row).getContents());
                    Assert.assertEquals(exSerial ,sh.getCell(col,row).getContents());
                    System.out.println("Pass");
                    driver.close();
                    driver.switchTo().window(SiteWindow);

                }

            }

        }
    }

    public static void main(String args[]) throws BiffException, IOException {
        runTest DT = new runTest();
        DT.readExcel();

    }
}

如果我的测试用例通过,我想在下一列写通过,如果失败,然后“失败”。

如何做到这一点,需要做些什么!!!

共有1个答案

柳和怡
2023-03-14
sheet.getRow(rowNumber).createCell(columnNumber).setCellValue("pass");

编辑:在您的代码中,您使用了与TestNG批注一起使用的< code > assert . assert equals(actual,expected)函数,但是您在这里没有使用TestNg批注,因此更好的方法是通过使用< code>equals()或< code>equalsIgnoreCase()方法来比较您的实际字符串和预期字符串,并基于此设置您的列通过或失败,下面是您想要的解决方案:

if (col ==3 ) {
                String exSerial  = (String) ((JavascriptExecutor)driver).executeScript(script);
                System.out.println("Actual rlSerial = "+ exSerial   + "\t" +"Excpected rlSerial = "+sh.getCell(col,row).getContents());
                //Assert.assertEquals(exSerial ,sh.getCell(col,row).getContents());
                if(exSerial.equals(sh.getCell(col,row).getContents())){
                    sh.getRow(row).createCell(totalNoOfCol).setCellValue("Pass");
                    System.out.println("Pass");
                }
                else{
                    sh.getRow(row).createCell(totalNoOfCol).setCellValue("Fail");
                    System.out.println("Fail");
                }                    
                driver.close();
                driver.switchTo().window(SiteWindow);

            }

并在for循环结束后保存工作表,如下所示:

FileOutputStream outFile =new FileOutputStream(new File(FilePath ));
    wb.write(outFile);
    outFile.close();
 类似资料:
  • 问题内容: 有人可以指出我正确的方向,以便在Java中写入Excel文件吗?我不了解我在网上找到的链接。您能给我发送链接还是我可以遵循的任何方式? 谢谢J 问题答案: 并不是平庸,但是Apache POI可以做到。您可以在此处找到一些代码示例: http //poi.apache.org/spreadsheet/examples.html

  • 问题内容: 我正在尝试编写XSLT以将特定的网页转换为JSON。以下代码演示了Ruby如何进行此转换,但是XSLT不会生成有效的JSON(数组中有太多逗号)-有人知道如何编写XSLT来生成有效的JSON吗? 问题答案: 从中的行省略逗号,然后添加: 这将为除最后一项以外的每一项添加逗号。

  • 问题内容: 我正在尝试根据从《 AI游戏程序员的技术》一书中选取的技术编写一种遗传算法,该技术对种群的基因使用二进制编码和适应性比例选择(也称为轮盘选择)。在程序内以二维数组随机生成。 最近,我遇到了一段伪代码并尝试实现它,但是遇到了一些我需要做的事情方面的问题。我检查了许多书籍和一些开源代码,但仍在努力取得进展。我了解我必须获得总体适应度的总和,在总和与零之间选择一个随机数,然后如果该数字大于父

  • 问题内容: 我有一个函数数组,我试图产生一个由数组中元素组成的函数。我的方法是: 此方法似乎无效,将不胜感激。 (我要反转列表,因为这是我希望函数成为的组合顺序) 问题答案: 它不起作用,因为您在循环中创建的所有匿名函数都引用相同的循环变量,因此共享其最终值。 作为快速解决方案,您可以将分配替换为: 或者,您可以从函数返回lambda: 要了解发生了什么,请尝试以下实验: 这个结果使许多人感到惊讶

  • 问题内容: Sun 用什么语言写? 问题答案: Sun实际上有多个JVM。所述热点JVM在C ++主要被写,因为热点在很大程度上基于所述Animorphic Smalltalk的VM被用C ++编写 。 比HotSpot更有趣的是IMHO Maxine Research VM ,它几乎完全用Java编写。

  • 问题内容: 我非常精通PHP,但想尝试一些新的东西。 我也了解一些Python,足以完成基础知识的工作,但是还没有在Web设计类型的情况下使用过。 我刚刚写了这个,它的工作原理是: 事实是,这似乎很麻烦。如果不使用诸如django之类的大型工具,那么编写可处理获取和发布的脚本的最佳方法是什么? 问题答案: 您的问题是关于基本CGI脚本的,请看您的示例,但是似乎每个人都选择了“使用我最喜欢的框架”来

  • 我试图创建一个新的Docker映像,它不再使用正在运行的容器中的卷,该容器使用映像。这些卷是使用docker-compose文件创建的,而不是使用dockerfile。问题是,当我通过新的docker-compose.yml文件启动一个新容器时,它仍然映射了卷。我仍然需要保留这些卷和使用它们的原始容器/图像。此外,如果可能的话,我想继续使用相同的docker图像,只需添加一个新版本,或:最新的。以

  • 我有一个函数数组,我试图生成一个函数,它由数组中的元素组成。我的做法是: 此方法似乎不起作用,请给予帮助。 (我正在反转列表,因为这是我希望函数的组合顺序)