【发布时间】:2014-11-13 08:53:45
【问题描述】:
我正在开发一个以前有人构建的测试自动化框架。该框架从 excel 文件中读取测试数据,并使用 Selenium webdriver 来控制浏览器并执行测试。
我通过添加一个从 CSV 文件读取数据的 TestNG 类来向该框架添加功能。当前框架中的一些函数使用 try/catch。所以当我从 TestNG 类中调用这些函数时,TestNG 总是会说测试通过了,无论如何。
例如,这是来自当前框架;
if (enterValueInBox.length() >= 1) {
try {
browserActions.typeValueInTextBox(myDriver, enterValueInBox);
} catch (Exception e) {
System.out.println("enterValueInBox failed");
}
}
此 if 语句位于函数内部。不管这个函数是否有效,它总是会在 TestNG 中通过。例如,即使 Selenium 找不到元素。
我该如何解决这个问题?我必须更改 try/catch 吗?
编辑:来自同一函数的另一个示例。该函数基本上由几个 if 语句组成,就像我在这里展示的两个一样。它们都具有相同的签名,因此内部带有 try/catch 的 if 语句。另外值得一提的是,我调用的函数/类不是 TestNG 类。所以我建立了一个TestNG类,并调用了一个非TestNG类->方法。
if (backSpaceInTextBox.length() > 1) {
try {
wa.handleSeleneseCommand(myDriver, Properties.TIME_TO_WAIT,
"niet gelukt");
browserActions.doBackSpaceInTextBox(myDriver,
backSpaceInTextBox);
} catch (Exception e) {
System.out.println("Could not do backspace");
}
}
【问题讨论】:
-
您能从您的测试中添加更多代码吗?
-
您的 catch 子句实际上只是在吞噬异常。它向控制台打印一条消息并继续正常执行。您需要以某种方式处理异常,或者在您的方法签名中声明抛出错误
-
@ToYonos 我试图小心处理代码,因为它是内部的。但是你想看什么样的代码?请参阅上面的编辑^
标签: java selenium try-catch testng