我正在使用assert()(TestNG)比较文本框值和excel表中的值 我面临的问题是即使excel和网站文本框中的值相同也显示错误 - java.lang.AssertionError:expected [0.02]但找到[0.0200]
HTML CODE:
<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">
Selenium代码:
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);
}
答案 0 :(得分:0)
您正在比较字符串,而不是数字。 “0.2”与“0.200”不同。
在比较之前尝试将它们转换为小数。
DecimalFormat df = new DecimalFormat("0.00");
df.setMaximumFractionDigits(2);
String decimal = df.format(someString);
理想情况下,创建BigDecimal
个对象并进行比较。
答案 1 :(得分:-1)
更改电子表格中的格式以匹配测试中的格式。或者反过来如果我读错了。它们都需要小数点后两位。至少这是我认为的。
答案 2 :(得分:-2)
如果要比较整数,请在比较之前将字符串转换为整数,这样可以帮助您减少混淆 将sting转换为Double请使用
double aDouble = Double.parseDouble("0.02");