如何使用Cucumber / Selenium / Java比较Scenario Outline上的示例中的值与Actual页面上的Actual值

时间:2017-07-11 05:30:42

标签: java selenium automation cucumber

鉴于:打开应用

时间:输入用户名和密码

然后:用户可以登录

并验证实际价格

与预期价格相比

示例:

|Actual Price                           | Expected Price|

|"//div[@class='actual_price']//span[2]"|    USD 100.00| 

|"//div[@class='actual_price']//span[2]"|    USD 200.00|

步骤def得到实际价格是:

@And("^verify the \"([^\"]*)\"$")
public void gettxt(String expectedPrice) throws Throwable {
    String actualprice= driver.findElement(By.xpath(actualprice)).getText();

    try{
    if(expectedPrice.equals(actualPrice)){
        System.out.println("Price is correct");
        System.out.println("Expected Price: " + expectedPrice);
        System.out.println("Actual Price: " + actualPrice);
    }else{
        System.out.println("Price is not correct");
        System.out.println("Expected Price: " + expectedPrice);
        System.out.println("Actual Price: " + actualPrice);
    }
}catch (Exception e){
    return;
    }

问题是如何比较实际价格和预期价格。感谢您的所有帮助..示例中的实际价格列是获取显示实际值的UI上的文本的xpath,然后预期价格列是预期值。 任何帮助将不胜感激......

1 个答案:

答案 0 :(得分:1)

您在此处输入的代码似乎不正确。

在步骤定义中匹配Gherkin的正则表达式将采用示例中的xpath。根据您定义的函数,此xpath字符串将存储在变量expectedprice中。

根据您的陈述String actualprice= driver.findElement(By.xpath(actualprice)).getText();,我假设您试图从xpath获取实际价格的值,然后尝试将其与您在“示例”部分中传递的expectedPrice进行比较。如果这是正确的,那么你需要重写你的代码

您的专题文件

Given: Open the app
When: Enter username and password
Then: user is able to login
And verify the Actual Price
And compare to the Expected Price

Examples:
|Actual Price                           | Expected Price|
|"//div[@class='actual_price']//span[2]"|    USD 100.00 | 
|"//div[@class='actual_price']//span[2]"|    USD 200.00 |

您的步骤定义

String actualPrice = null;
@And("^verify the \"([^\"]*)\"$")
public void gettxt(String actualPricePath) throws Throwable {
            actualPrice= driver.findElement(By.xpath(actualpricePath)).getText();
}

@And("^Compare to the \"([^\"]*)\"$")
public void comparePrices(String expectedPrice){
    Assert.assertEquals(expectedPrice, actualPrice, "The actual price is not equal to expected price");
}