我正在尝试在我的Java项目中构建的Selenium测试中实现一个javaScript错误监听器。
为了检测控制台Java Script错误,我在JavaScript项目中实现了一个脚本,它将在主体底部推送控制台错误消息,其中包含一个包含特定ID和错误消息的元素。
我编码的侦听器错误如下:
file.txt:
Name: sam
email: email@email.com
我在测试方法中调用的内容如下:
<?php
$myFile = "file.txt";
$txt = 'thetxt';
$file = file($myFile);
foreach ($file as $row_num => $row) {
//idk what i should do here
}
$file_o = fopen($myFile, "w");
fwrite($file_o, $txt);
fclose($file_o);
?>
问题是,因为我使用相同的Chrome实例来不断地监听特定的WebElement,所以我从两个方法(测试和监听器)并行地抛出请求,并且该过程最终因为崩溃而崩溃他们在同一时间而且没有被同步(一个接一个)。
我意识到一个选项可能是在每次执行某些操作后检查错误,但这会大大增加我的代码行,并且它只是部分解决方案,因为某些错误可能仅以毫秒为单位发生。 ..
这个问题有解决方案吗?
提前致谢!
答案 0 :(得分:0)
首先,您必须创建TestListener.java文件
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class TestListener implements ITestListener {
@Override
public void onTestStart(ITestResult result) {
System.out.println("Started Test: " + result.getName());
}
@Override
public void onTestSuccess(ITestResult result) {
System.out.println("Finished Test: " + result.getName() + " :PASSED");
}
@Override
public void onTestFailure(ITestResult result) {
System.out.println("Finished Test: " + result.getName() + " :FAILED");
}
@Override
public void onTestSkipped(ITestResult result) {
System.out.println("Finished Test: " + result.getName() + " :SKIPPED");
}
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
System.out.println("Finished Test: " + result.getName()
+ " :FAILED BUT WITHIN SUCCESS PERCENTAGE");
}
@Override
public void onStart(ITestContext context) {
// TODO Auto-generated method stub
}
@Override
public void onFinish(ITestContext context) {
// TODO Auto-generated method stub
}
}
您可以根据自己自定义此文件。接下来你需要做的是你需要在Test类中提到这个监听器
@Listeners(TestListener.class)
public class TestClass{
@Test(dataProvider = "TestData" , dataProviderClass = DataProviderUtil.class)
public void test(List data) throws Exception {
try{
// your code here
}
catch(Exception e){
Log.exception(e);
}finally {
Log.endTestCase();
}
}
}