当前位置: 首页 > 知识库问答 >
问题:

Cucumber在Spring框架上@Then step失败,无法读取结果

陶宜民
2023-03-14

我有一个cucumber框架,数据按预期发送,但结果没有被正确读取。我怀疑是因为答案没有出现在计算器的文本框中:

org.junit.比较失败:预期:3实际:0

at org.junit.Assert.assertEquals(Assert.java:115)
at org.junit.Assert.assertEquals(Assert.java:144)
at io.autotest.steps.GivenSteps.i_should_get_an_answer_of(GivenSteps.java:48)
at ✽.Then I should get an answer of "3"(cucumber-feature/google-calc.feature:7)

功能文件功能:谷歌计算器应该计算正确的计算

场景概述:添加数字鉴于我在谷歌计算器页面上,当我将数字“”添加到数字“”时,我应该会得到一个答案“”

Examples: 
    | number1 | number2 | answer |
    | 1       | 2       | 3      |
    | 4       | 5       | 9      |

场景大纲:减去数字给定我在谷歌计算器页面当我减去数字“”到数字“”然后我应该得到“”的答案

Examples: 
    | number1 | number2 | answer |
    | 10      | 5       | 5      |
    | 15      | 10      | 5     |

步骤:

@Autowired
private GoogleCalcPage googleCalcPage;

@Given("^I am on google calculator page$")
public void iAmOnGoogleCalculatorPage() throws Throwable {
    webDriver.get("https://www.google.ie/search?q=calculator");
    Thread.sleep(3000);
}

@When("^I add number \"([^\"]*)\" to number \"([^\"]*)\"$")
public void i_add_number_to_number(String arg1, String arg2) {
    googleCalcPage.clickOnGivenButton(webDriver, arg1);
    googleCalcPage.clickOnGivenButton(webDriver, "+");
    googleCalcPage.clickOnGivenButton(webDriver, arg2);
    googleCalcPage.clickOnGivenButton(webDriver, "=");
}

@When("^I subtract number \"([^\"]*)\" to number \"([^\"]*)\"$")
public void i_subtract_number_to_number(String arg1, String arg2) {
    googleCalcPage.clickOnGivenButton(webDriver, arg1);
    googleCalcPage.clickOnGivenButton(webDriver, "−");
    googleCalcPage.clickOnGivenButton(webDriver, arg2);
    googleCalcPage.clickOnGivenButton(webDriver, "=");
}

@Then("^I should get an answer of \"([^\"]*)\"$")
public void i_should_get_an_answer_of(String arg1) {

    Assert.assertEquals(arg1, googleCalcPage.getResult());

}}

页面对象@PageObject公共类GoogleCalcPage{@FindBy(id=“cwbt33”)私有WebElement btn1;@FindBy(id=“cwbt34”)私有WebElement btn2;@FindBy(id=“cwbt35”)私有WebElement btn3;@FindBy(id=“cwtltblr”)私有WebElement结果;

public GoogleCalcPage() {
}

//findElement(By.id("cwtltblr"));

public void clickOnGivenButton(WebDriver driver, String value) {

    for (int i = 0; i < value.length(); i++) {
        driver.findElement(By.id(String.format("cwtltblr", value.charAt(i)))).click();
        //driver.findElement(By.xpath(String.format("//span[text()='%s']", value.charAt(i)))).click();
        synchTime(1000);    
    }
}

private void synchTime(long time) {
    try {
        Thread.sleep(time);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public String getResult() {

    String resultText = result.getText().trim();

    return resultText;
}

}

想知道有没有人有什么想法?

共有1个答案

罗新
2023-03-14

如果结果没有显示,页面对象很难找到它,失败也就不足为奇了。

你有时间问题吗?你是在寻找早起的价值吗?如果你在图形浏览器中运行,比如Firefox,你会在结果框中看到一个值吗?

对我来说,似乎你需要麻烦拍摄你的页面对象,而不是其他任何东西。

 类似资料:
  • 我的猜测是我没有以正确的方式声明模式文档,但我不知道错误到底在哪里。我做错了什么?

  • 我不熟悉量角器测试。似乎缺少getWebelement。我的保护者的版本是3.0。0.其他属性正常(如单击、评估…) 或者 (c:\Users\xxx\AppData\Roaming\npm\node\u modules\dragor\lib\element.js:754:36)位于c:\Users\xxx\AppData\Roaming\npm\node\u modules\dragor\nod

  • 我正在使用cucumber框架进行移动应用程序测试。在pom.xml中,我给出了下面这个插件来运行TestClass.java--它有上传应用程序最新apk版本的代码。Main方法存在于这个TestClass中。我需要在实际测试执行之前运行这个。如果我使用pom.xml-->mvn clean test运行,我会得到这个错误。ClassNotFoundExpection总是与pom.xml一起抛出

  • 我需要保存运行ICACLS命令的结果,更改它们,并将更改后的权限恢复回来。我使用vbcript来做到这一点。问题是,从保存的数据中读取行或整个数据会给我一个字符和一堆空格。但是如果我尝试读取结果数据的内容,由ICACLS上传,逐个字符,并动态打印,它会显示正确的内容。 我怀疑,问题出在ICACLS本身:它不写一个真正的文本文件。我找到了另一个遇到这种情况的人(https://windowssecr

  • 我正在构建一个Apache Beam管道,将Kafka作为一个无界源进行阅读。 我能够使用直接运行器在本地运行它。 然而,当在云上使用Google Cloud Dataflow runner运行时,管道会因附加的异常堆栈跟踪而失败。 似乎最终是Conscrypt Java库抛出了。我真的不知道如何解决这个问题。

  • 部署在两台计算机上的Apache Ignite服务器自动关闭。原木上没有具体的线索。我可以在日志文件中看到以下警告消息: