【问题标题】:Comparing data between website and Excel data比较网站数据和 Excel 数据之间的数据
【发布时间】:2014-04-05 18:07:08
【问题描述】:

我正在使用 assert() (TestNG) 比较文本框值和 excel 表中的值 我面临的问题是,即使 excel 和网站文本框中的值相同,它也会显示错误 - java.lang.AssertionError: expected [0.02] but found [0.0200]

HTML 代码:

<input id="ctl00_ContentPlaceHolder1_txtBlackCost1" class="textboxnew" type="text"
 style="width:50px;text-align: right" onblur="AllowNumber(this,this.value);
 CallonBlur(this.value,'spn_Black_1');
 Calculate_BlackChargeableRate(this.value,1,'cost');" maxlength="12" value="0.0200"
 name="ctl00$ContentPlaceHolder1$txtBlackCost1"> 

硒代码:

public static void CompareStringTextByID(String xlpath,String sheetName,int rownum,int cellnum,String LocationName,String WebelementID)
{
    WebElement TxtBoxContent = driver.findElement(By.id(WebelementID));
    String Content = TxtBoxContent.getAttribute("value");
    String ExcelData = Generic.getXlCellValue(xlpath, sheetName, rownum, cellnum);
    Assert.assertEquals(Content, ""+ExcelData);
    Reporter.log(LocationName+" Data Verification -- PASS",true);
}

【问题讨论】:

  • 错误显示两个字符串不同,您可以发布一个示例字符串

标签: java excel selenium selenium-webdriver


【解决方案1】:

您正在比较字符串,而不是数字。 “0.2”与“0.200”不同。

在比较它们之前尝试将它们转换为小数。

DecimalFormat df = new DecimalFormat("0.00");
df.setMaximumFractionDigits(2);
String decimal = df.format(someString);

理想情况下,创建BigDecimal 对象并比较它们。

【讨论】:

  • 如何将文本框字符串值转换为十进制数
  • @Santhosh.S ``Double.parseDouble(string);
  • BigDecimal decimal = new BigDecimal(someString);
【解决方案2】:

更改电子表格中的格式以匹配测试中的格式。或者如果我读错了,反之亦然。它们都需要保留 2 位小数。至少我是这么认为的。

【讨论】:

    【解决方案3】:

    如果您要与整数进行比较,请在比较之前将字符串转换为整数,这将帮助您减少混淆 要将字符串转换为 Double 请使用

    double aDouble = Double.parseDouble("0.02");
    

    【讨论】:

    • 要解析为整数的十进制值?请重新考虑您的示例
    • 请理解他的问题,他真正的问题是他试图将两个数字作为字符串进行比较,这是一件坏事。我只是指出他应该在比较之前进行转换。无论如何我已经更新了它。
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 2023-03-27
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多