Java Selenium将Web表与Excel数据进行比较

Java Selenium将Web表与Excel数据进行比较,java,selenium,selenium-webdriver,apache-poi,Java,Selenium,Selenium Webdriver,Apache Poi,我需要将Web表与下载的excel文件进行比较。 Excel数据具有Excel格式的数值(例如523010735055.256,格式为Excel$523011)。 我需要用UI值验证$523011。 我怎样才能使这两张桌子相等呢。 参考图像[1]:“图像” 我已经使用了DataFormatter,正如大多数其他帖子针对类似问题所建议的那样。但它不起作用 我已经找到了解决这个问题的其他方法,而不必担心 switch (cell.getCellType()) {

我需要将Web表与下载的excel文件进行比较。 Excel数据具有Excel格式的数值(例如523010735055.256,格式为Excel$523011)。 我需要用UI值验证$523011。 我怎样才能使这两张桌子相等呢。 参考图像[1]:“图像”

我已经使用了DataFormatter,正如大多数其他帖子针对类似问题所建议的那样。但它不起作用

我已经找到了解决这个问题的其他方法,而不必担心

                switch (cell.getCellType()) {
                case Cell.CELL_TYPE_NUMERIC:
                    cell.getNumericCellValue();
                    String value = formatter.formatCellValue(cell);
                    System.out.print(value + " ");

                    break;
我如何以下面的方式更改上述代码

                    String val1 = null;
                    Double numvalue1 = cell.getNumericCellValue();
                    Long longValue1 = numvalue1.longValue();
                    val1 = new String(longValue1.toString());
                    BigDecimal convertres1 = new BigDecimal(val1);
                    String aarwavalue1 = (convertres1.divide(new BigDecimal("1000000")).setScale(0, RoundingMode.FLOOR) + "");
代码
waitForElementPresent(驱动程序,30,mstrframe)

POI更改为4.1.0

                while (cellIterator.hasNext()) {
                Cell cell = cellIterator.next();
                // Check the cell type and format accordingly
                switch (cell.getCellType()) {   
                case NUMERIC:
                    cell.getNumericCellValue();                 
                    String value =formatter.formatCellValue(cell);
                    System.out.print(value + " ");
                    break;                      
                case STRING:
                    System.out.print(cell.getStringCellValue() + " ");
                    break;
                default:
                    break;
                }
            }
            System.out.println("");
        }

感谢@AxcelRicher提供的所有反馈。 在这种情况下,Dataformatter不起作用

我将使用下面的代码来解决这个问题

                switch (cell.getCellType()) {   
                case NUMERIC:
                    //cell.getNumericCellValue();
                    Double value= cell.getNumericCellValue();
                    Long longValue1 = value.longValue();
                    String val1 = new String(longValue1.toString());
                    BigDecimal convertres1 = new BigDecimal(val1);
                    String aarwavalue1 = (convertres1.divide(new BigDecimal("1000000")).setScale(0, RoundingMode.FLOOR) + "");
                    System.out.print(aarwavalue1 + "\t ");
                    break;                      
                case STRING:
                    System.out.print(cell.getStringCellValue() + " ");
                    break;
                default:
                    break;

感谢@AxcelRicher提供的所有反馈。 在这种情况下,Dataformatter不起作用

我将使用下面的代码来解决这个问题

                switch (cell.getCellType()) {   
                case NUMERIC:
                    //cell.getNumericCellValue();
                    Double value= cell.getNumericCellValue();
                    Long longValue1 = value.longValue();
                    String val1 = new String(longValue1.toString());
                    BigDecimal convertres1 = new BigDecimal(val1);
                    String aarwavalue1 = (convertres1.divide(new BigDecimal("1000000")).setScale(0, RoundingMode.FLOOR) + "");
                    System.out.print(aarwavalue1 + "\t ");
                    break;                      
                case STRING:
                    System.out.print(cell.getStringCellValue() + " ");
                    break;
                default:
                    break;

如果使用了正数、负数、零和/或文本的多个模式,并且没有给出所有四个子模式,则数据格式化程序在最后一个子模式后似乎需要一个分号

示例:
正数格式;负数格式;零格式;文本格式
有效,但
正数格式;负数格式
无效,需要是
正数格式;负数格式;
。请注意负数模式后的分号卢比

这与
Excel
不同,因为这里不需要最后一个分号

如果我们知道这一点,我们可以做到以下几点:

图纸示例:

Excel
中的数字格式模式是
“$”、“$”、“$”、“$”、“$”、“$”、“$”、“$”、“$”、”)

代码:

结果:

axel@arichter:~/Dokumente/JAVA/poi/poi-4.1.0$ javac -Xlint:deprecation -Xlint:unchecked -cp .:./*:./lib/*:./ooxml-lib/* ReadExcelSpecialNumberFormat.java 
axel@arichter:~/Dokumente/JAVA/poi/poi-4.1.0$ java -cp .:./*:./lib/*:./ooxml-lib/* ReadExcelSpecialNumberFormat 
Data Grouping  Amount 1 ($ M) Amount 2 ($ M) Amount 3 ($ M) 
Credit Risk $ 772.314 $ 913.546 $ 812.453 
Available For Sale ($ 685.104) $ 800.603 $ 830.131 
Contingent $ 509.480 $ 524.524 ($ 629.797) 
Total $ 596.689 $ 2.238.674 $ 1.012.786 

如果使用了正数、负数、零和/或文本的多个模式,并且没有给出所有四个子模式,则数据格式化程序在最后一个子模式后似乎需要一个分号

示例:
正数格式;负数格式;零格式;文本格式
有效,但
正数格式;负数格式
无效,需要是
正数格式;负数格式;
。请注意负数模式后的分号卢比

这与
Excel
不同,因为这里不需要最后一个分号

如果我们知道这一点,我们可以做到以下几点:

图纸示例:

Excel
中的数字格式模式是
“$”、“$”、“$”、“$”、“$”、“$”、“$”、“$”、“$”、”)

代码:

结果:

axel@arichter:~/Dokumente/JAVA/poi/poi-4.1.0$ javac -Xlint:deprecation -Xlint:unchecked -cp .:./*:./lib/*:./ooxml-lib/* ReadExcelSpecialNumberFormat.java 
axel@arichter:~/Dokumente/JAVA/poi/poi-4.1.0$ java -cp .:./*:./lib/*:./ooxml-lib/* ReadExcelSpecialNumberFormat 
Data Grouping  Amount 1 ($ M) Amount 2 ($ M) Amount 3 ($ M) 
Credit Risk $ 772.314 $ 913.546 $ 812.453 
Available For Sale ($ 685.104) $ 800.603 $ 830.131 
Contingent $ 509.480 $ 524.524 ($ 629.797) 
Total $ 596.689 $ 2.238.674 $ 1.012.786 

刚刚测试。
apache-poi的
DataFormatter
版本
4.1.0
支持
formatCode=“\$\\\\\\\\\\\\\\\”0,“
。所以这个问题对我来说是不可复制的。@Axel Richer请使用
DataFormatter
阅读编辑过的代码是正确的方法。正如我所说的那样,
DataFormatter
适用于数字523010735055.256,在excel中使用
$#,##0,
格式模式,显示为$523011。然后
formatter.FormatterValue(单元格)
为该单元格精确生成“$523011”。@AxelRichter当我更改为poi 4.1.0时,我正在使用poi 3.17,如果(cell.getCellType()==HSSFCell.cell\u TYPE\u STRING)“单元格\u TYPE\u STRING无法重新绘制”,我的框架中会出现错误我怎么能过来this@AxelRichter我已经解决了更改为4.1.0的所有问题,但数据格式化程序仍不能使用刚刚测试过的4.1.0版本。
apachepoi的
DataFormatter
version
4.1.0
支持
formatCode=“\$\\\\\\\,”
。所以这个问题对我来说是不可复制的。@Axel Richer请使用
DataFormatter
阅读编辑过的代码是正确的方法。正如我所说的那样,
DataFormatter
适用于数字523010735055.256,在excel中使用
$#,##0,
格式模式,显示为$523011。然后
formatter.FormatterValue(单元格)
为该单元格精确生成“$523011”。@AxelRichter当我更改为poi 4.1.0时,我正在使用poi 3.17,如果(cell.getCellType()==HSSFCell.cell\u TYPE\u STRING)“单元格\u TYPE\u STRING无法重新绘制”,我的框架中会出现错误我怎么能过来this@AxelRichter我已经克服了4.1.0版本的所有问题,但数据格式化程序仍然不能使用4.1.0版本
axel@arichter:~/Dokumente/JAVA/poi/poi-4.1.0$ javac -Xlint:deprecation -Xlint:unchecked -cp .:./*:./lib/*:./ooxml-lib/* ReadExcelSpecialNumberFormat.java 
axel@arichter:~/Dokumente/JAVA/poi/poi-4.1.0$ java -cp .:./*:./lib/*:./ooxml-lib/* ReadExcelSpecialNumberFormat 
Data Grouping  Amount 1 ($ M) Amount 2 ($ M) Amount 3 ($ M) 
Credit Risk $ 772.314 $ 913.546 $ 812.453 
Available For Sale ($ 685.104) $ 800.603 $ 830.131 
Contingent $ 509.480 $ 524.524 ($ 629.797) 
Total $ 596.689 $ 2.238.674 $ 1.012.786