App在调试模式下工作,直接运行时失败

时间:2018-02-11 19:58:58

标签: java selenium debugging

我有一个用java-selenium编写的测试应用程序。这个应用程序测试电子商店是否有可能购买产品和许多其他功能。

几天前,我添加了一项新功能,用于测试付款是否成功。如果订单不成功,则会在URL中添加“#errorBox”,因此我正在检查URL是否包含此序列:

public void paymentCheck() {
    String URL = driver.getCurrentUrl();
    if (URL.contains("#errorBox")) {
        data.put("paymentFailed", "true");
    } else {
        data.put("paymentFailed", "false");
    }
}

如果有“#errorBox”,则会将paymentFailed = true添加到数据集中。然后我检查它的存在:

.paymentCheck();

    if (dataRow.get("paymentFailed").equals("true")) {
        resultLine.addTestResultLineItem(
                new TestResultLineItemMessage("ERROR: Payment declined, transaction was not accepted.").setResult(Result.FAIL)
        );
        driver.quit();
    }

问题是:调试时,检查工作正常。当应用程序直接运行时,测试失败,因为应用程序跳过设置结果为FAILED并且也没有杀死驱动程序。

这里有什么问题吗?

感谢任何帮助, 感谢

2 个答案:

答案 0 :(得分:0)

在调试模型中,每个步骤之间插入一些延迟,当直接运行时,我们应该在driver.getCurrentUrl()之前添加一些睡眠/等待。

根据我的经验,通常付款需要很长时间。

答案 1 :(得分:0)

脚本在调试模式下工作正常,在正常运行时失败。这是潜伏期的明确指示。在代码中包含Thread.sleep(秒)。虽然不建议使用thread.sleep(),但它是一个更好的选择,因为我们不知道应用程序的性质。否则,您可以在代码中尝试隐式等待或显式等待条件。