Q1)我在Selenium-TestNG中有一个现有的框架以及Listeners类。我使用testng的@aftertest注释关闭浏览器:
@AfterTest
public void teardown()
{
driver.quit();
}
这里,Listeners类的onTestSuccess方法在我作为没有cucumber特性文件的普通旧Selenium TestNG运行时工作得非常好:
public void onTestSuccess(ITestResult result)
{
test.log(Status.PASS, "Test case Passed");
try
{
String path = takeScreenshot(driver, "Pass/" + result.getInstanceName() + "/" + result.getMethod().getMethodName());
test.addScreenCaptureFromPath(path, result.getMethod().getMethodName());
}
catch (Exception e)
{
log.fatal("Exception in onTestSuccess Method of Listeners class");
log.fatal(e.getMessage() +" : " + e.getStackTrace());
System.out.println("Exception " + e.getMessage());
System.out.println("Exception " + e.getStackTrace());
}
}
当测试通过时,首先调用Listeners类的onTestSuccess()方法,然后调用teardown()方法。所以一切都很顺利。
现在我在Cucumber中使用这个特性文件:
Feature: Logout feature
Background:
Given User is on Salesforce login page
@SmokeTest @Low @PositiveTest @Logout
Scenario: Logout of application
Given "RMUser" has logged into Salesforce application
When User clicks on logout button
Then Users is logged-out from the application
并使用@after钩子关闭浏览器:
@After
public void teardown() {
driver.quit();
}
现在,当我作为TestNG运行这个特性文件时,首先调用Hooks文件中的teardown方法,然后调用Listeners类的onTestSuccess()方法,因此我得到错误“Exception Session ID is null.在调用quit()后使用WebDriver?”在我尝试使用驱动变量的行处:
String path = takeScreenshot(driver, "Pass/" + result.getInstanceName() + "/" + result.getMethod().getMethodName());
寻求一些变通办法或想法来解决这个问题在cucumber。
Q2)当作为普通的Selenimm-TestNG运行时,Stepte Reports在报告中提供正确的TestName,但当作为TestNG Cuccumber框架运行时,Stepte Reports只是将所有测试名称显示为“runScenary”。
如何使ExtentReport给出正确的特性文件方案名称,而不仅仅是“runscrena”
我通过删除driver.quit()解决了TestNG Listeners类异常;并将其放在Listeners类的onTestStart和onTestFailure方法中:
public void onTestSuccess(ITestResult result)
{
test.log(Status.PASS, "Test case Passed");
try
{
String path = takeScreenshot(driver, "Pass/" + result.getInstanceName() + "/" + result.getMethod().getMethodName());
test.addScreenCaptureFromPath(path, result.getMethod().getMethodName());
}
catch (Exception e)
{
log.fatal("Exception in onTestSuccess Method of Listeners class");
log.fatal(e.getMessage() +" : " + e.getStackTrace());
System.out.println("Exception " + e.getMessage());
System.out.println("Exception " + e.getStackTrace());
}
driver.quit();
}
public void onTestFailure(ITestResult result) {
test.log(Status.FAIL, "Test case Failed");
test.fail(result.getThrowable());
try
{
String path = takeScreenshot(driver, "Fail/" + result.getInstanceName() + "/" + result.getMethod().getMethodName());
test.addScreenCaptureFromPath(path, result.getMethod().getMethodName());
}
catch(Exception e)
{
log.fatal("Exception in onTestFailure Method of Listeners class");
log.fatal(e.getMessage() +" : " + e.getStackTrace());
System.out.println("Exception " + e.getMessage());
System.out.println("Exception " + e.getStackTrace());
}
driver.quit();
}
由于testcase要么通过,要么失败,因此控制总是来自onTestSuccess或onTestFailure方法,这将在testcase完成执行后退出驱动程序。
我的问题有两个方面。要解决的错误是,当我使用自定义路由重用策略时,当我使用implements重写angular路由器类RouteReuseStrategy时,该策略不会被触发,当我使用extends关键字时,我会出现以下异常, 我的生成设置的详细信息: > 使用gulp编译 gulp.task(“compile”,()=>{let tsResult=gulp.src(“app/**/*.ts”)
我正在尝试学习python来处理一个测试项目。是否有一种方法可以在python测试框架中实现类似功能的TestNG侦听器。 侦听器有诸如OnTestFailure()、OnTestSuccess、OnStart()等方法,当您想要做某些事情时,这些方法非常有用。 比方说,一个测试用例失败了,您想执行一些操作,比如截图。然后你可以只在一个地方写,而不是在每个测试方法中都写。
第十三章介绍了如何开发一个Web框架,通过介绍MVC、路由、日志处理、配置处理完成了一个基本的框架系统,但是一个好的框架需要一些方便的辅助工具来快速的开发Web,那么我们这一章将就如何提供一些快速开发Web的工具进行介绍,第一小节介绍如何处理静态文件,如何利用现有的twitter开源的bootstrap进行快速的开发美观的站点,第二小节介绍如何利用前面介绍的session来进行用户登录处理,第三小
我有三个SQS FIFO队列,其中每个队列在EC2实例中都有一个数据投影侦听器守护进程,作为docker pod(SQL Server、PostgreSQL、Elastic Search等) 所有队列的设置如下(死信队列稍后设置)。 这都是我使用DynamoDB流设计的事件源架构的一部分= 启用以避免队列中的重复消息,因为Lambda路由器中的任何队列总是可能出现错误。 现在,我还将每条消息的设置
问题内容: 我有一个ArrayList,它向其中动态添加了一些对象,并且有一个JButton。运行我的程序时ArrayList为空,并且JButton设置为setEnabled(false)。我想在ArrayList中有2个或更多元素时启用我的按钮,如果ArrayList有一项或为空则再次禁用它。我该如何实现? 问题答案: 没有任何种类的通知机制。 我建议您编写自己的实现,该实现将委托给私有的实现
我正在使用cucumber框架进行移动应用程序测试。在pom.xml中,我给出了下面这个插件来运行TestClass.java--它有上传应用程序最新apk版本的代码。Main方法存在于这个TestClass中。我需要在实际测试执行之前运行这个。如果我使用pom.xml-->mvn clean test运行,我会得到这个错误。ClassNotFoundExpection总是与pom.xml一起抛出