如何用 selenium 和 java 比较两个数字? (一个数字来自 CSV 文件,另一个数字来自网站)
how to compare two numbers with selenium and java? (One number from CSV file and another in website)
我写了一个程序来比较网站上的价格和带有 selenium 的 csv 文件和 java,在程序结束时我写了断言来确认两个数字但是它有一个问题:
预期价格为 57,15
实际价格为57.15
实际价格应该是 57,15,我不知道该怎么写,你能帮帮我吗?
@Test(priority = 1)
void checkBeschädigung() throws FileNotFoundException {
prepareTest();
List<CsvPrice> stuff = readFromCSV("resources/price/BikePrice.csv");
Select price = new Select(driver.findElement(By.id("coverageSum")));
price.selectByIndex(1);
driver.findElement(By.xpath("//*[@id=\"landingApp\"]/div[1]/div/div[2]/div/div/div/form/div[3]/div/div[2]/div[2]/div/label/input")).click();
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
WebElement FirstPrice = driver.findElement(By.xpath("//*[@id='product-configurator-spinner']//parent::span"));
String finalprice = FirstPrice.getText().split(" ")[0];
System.out.println(finalprice);
for (int i = 0; i <= 329; i++) {
if (String.valueOf(stuff.get(i).getCoverageSum()).equals("250")
&& String.valueOf(stuff.get(i).getDurationStart()).equals("1") && stuff.get(i).getQualityName().equals("Diebstahl")
&& stuff.get(i).getDurationTimeUnit().equals("YEARS")) {
System.out.println(stuff.get(i).getPriceBasePrice());
Assert.assertEquals(finalprice, String.valueOf(stuff.get(i).getPriceBasePrice()));
break;
} else {
System.out.println("that is wrong");
}
}
请在断言行之前尝试以下代码来更改“。”到字符串数据中的“,”:
String actualValueWithComa = String.valueOf(stuff.get(i).getPriceBasePrice()).replaceAll(".",",");
Assert.assertEquals(finalprice, actualValueWithComa));
我建议您修改 CSV 文件中的测试数据。
如果您尝试替换“.”使用“,”,您可能 运行 在验证具有带小数点的较高值数据的案例时遇到问题。
可能会用逗号显示值以分隔千位等。例如:5,10,000.50
我写了一个程序来比较网站上的价格和带有 selenium 的 csv 文件和 java,在程序结束时我写了断言来确认两个数字但是它有一个问题:
预期价格为 57,15
实际价格为57.15
实际价格应该是 57,15,我不知道该怎么写,你能帮帮我吗?
@Test(priority = 1)
void checkBeschädigung() throws FileNotFoundException {
prepareTest();
List<CsvPrice> stuff = readFromCSV("resources/price/BikePrice.csv");
Select price = new Select(driver.findElement(By.id("coverageSum")));
price.selectByIndex(1);
driver.findElement(By.xpath("//*[@id=\"landingApp\"]/div[1]/div/div[2]/div/div/div/form/div[3]/div/div[2]/div[2]/div/label/input")).click();
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
WebElement FirstPrice = driver.findElement(By.xpath("//*[@id='product-configurator-spinner']//parent::span"));
String finalprice = FirstPrice.getText().split(" ")[0];
System.out.println(finalprice);
for (int i = 0; i <= 329; i++) {
if (String.valueOf(stuff.get(i).getCoverageSum()).equals("250")
&& String.valueOf(stuff.get(i).getDurationStart()).equals("1") && stuff.get(i).getQualityName().equals("Diebstahl")
&& stuff.get(i).getDurationTimeUnit().equals("YEARS")) {
System.out.println(stuff.get(i).getPriceBasePrice());
Assert.assertEquals(finalprice, String.valueOf(stuff.get(i).getPriceBasePrice()));
break;
} else {
System.out.println("that is wrong");
}
}
请在断言行之前尝试以下代码来更改“。”到字符串数据中的“,”:
String actualValueWithComa = String.valueOf(stuff.get(i).getPriceBasePrice()).replaceAll(".",",");
Assert.assertEquals(finalprice, actualValueWithComa));
我建议您修改 CSV 文件中的测试数据。 如果您尝试替换“.”使用“,”,您可能 运行 在验证具有带小数点的较高值数据的案例时遇到问题。 可能会用逗号显示值以分隔千位等。例如:5,10,000.50