我有一个用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并且也没有杀死驱动程序。
这里有什么问题吗?
感谢任何帮助, 感谢
答案 0 :(得分:0)
在调试模型中,每个步骤之间插入一些延迟,当直接运行时,我们应该在driver.getCurrentUrl()
之前添加一些睡眠/等待。
根据我的经验,通常付款需要很长时间。
答案 1 :(得分:0)
脚本在调试模式下工作正常,在正常运行时失败。这是潜伏期的明确指示。在代码中包含Thread.sleep(秒)。虽然不建议使用thread.sleep(),但它是一个更好的选择,因为我们不知道应用程序的性质。否则,您可以在代码中尝试隐式等待或显式等待条件。