- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 Selenium 测试中使用自定义 WebDriverEventListener 来进行日志记录和屏幕截图。效果很好:
例如,当在浏览器窗口中找不到某个元素时,网络驱动程序会抛出异常,并正确触发 onException() 方法
@Override
public void onException(Throwable throwable, WebDriver driver) {
// do stuff
}
当我自己抛出异常时,如下所示:抛出 new WebDriverException("my message");
事件不会触发。
有人可以解释一下这种行为吗?
最佳答案
如果您想在测试失败或出现异常时执行某些操作,您可以向测试添加一条规则(在 @Before setUp() 所在的类中添加):
@Rule
public TestRule testWatcher = new TestWatcher() {
@Override
public void succeeded(Description test){
for (LogEntry log : driver.manage().logs().get(LogType.DRIVER).getAll()) {
System.out.println("Level:" + log.getLevel().getName());
System.out.println("Message:" + log.getMessage());
System.out.println("Time:" + log.getTimestamp());
System.out.println("-----------------------------------------------");
}
System.out.println();
@Override
public void failed(Throwable t, Description test) {
String testName = test.getClassName();
String subTestName = test.getMethodName();
String screenShotName = String.format("%s\\%s", testName, screenShotName);
if (driver instanceof TakesScreenshot) {
File tempFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
try {
System.out.println(">>>>>>>>>>LOGS: " + yourDirForImages + "\\" + screenShotName + ".png");
FileUtils.copyFile(tempFile, new File(String.format("%s.png", screenShotName)));
} catch (IOException e) {
e.printStackTrace();
}
}
}
监听器可用于在触发某些操作时执行某些代码,如果有页眉、 Logo 或页脚,则在单击之前执行一些代码。
public class ListenerMethodsImplementation extends AbstractWebDriverEventListener {
public void beforeClickOn(WebElement element, WebDriver myTestDriver) {
assertTrue("No Logo!", myTestDriver.findElements(By.id("logo")) == 1);
}
如何使用:
@Before
public void setUp() {
EventFiringWebDriver myTestDriver = new EventFiringWebDriver(driver);
ListenerMethodsImplementation myListener = new ListenerMethodsImplementation();
myTestDriver.register(myListener);
driver = myTestDriver;
}
如何从监听器获取驱动程序:((EventFiringWebDriver) driver).getWrappedDriver()
PS,这只是我的代码的一小部分,但我认为这会对您有所帮助。
关于java - WebDriverEventListener 中的 onException 何时触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20995722/
finally和 onException是模块 Control.Exception 中的两个函数,它们具有相同的签名但行为不同。 Here是文件。 对于 finally , 它说: finally :
我有带有 OnException 处理程序的 BaseController 类。 public class ApiBaseController : Controller { protected
在单个 Camel 路由中,我有两个 url 调用,调用两个不同的应用程序。 to("http://datasource1/data) //some process to("http://dataso
我有一个带有主线程和 JMS 线程的应用程序,它们通过 ActiveMQ 5.15.11 相互通信。我可以很好地发送消息,但是我想要一种发回状态或错误的方法。我注意到 MessageListener
我对 apache Camel 相当陌生,但我想使用 onException 构建异常处理。由于我想捕获异常并提供响应,但也想将错误记录到外部系统,所以我希望有 2 个 bean 来处理异常。 目前我
我正在尝试测试我的 onException 代码,但它在单元测试下没有触发。我可以 doCatch() 路由中的异常,但否则它只是传递回单元测试代码。我将其归结为硬编码的 throwException
我想捕获路由中的所有异常。 我添加这个 OnExeption : onException(Exception.class).process(new MyFunctionFailureHandler()
我有以下自定义方面,并尝试在项目和类级别应用它。在所有情况下,即使是有意除以零,也永远不会调用 OnException 方法。我做错了什么? [Serializable] public class A
我在 JPA 中使用 Camel 2.10。 在我的上下文中,我有 2 条路线。 路由 1 从 JPA 端点(db 表)消费,进行一些处理(在 bean 中),然后将消息转发到路由 2。如果在处理过程
我试图在全局 onException 中捕获我自己的异常。在捕获 Jaxb 异常后,我抛出了异常。但是 CustomException 不会被 onException 捕获 onException(E
我正在使用 Delphi 7 并尝试处理程序运行期间抛出的所有可能的异常。我使用了 Application.OnException := HandlerProcedure;处理异常,但当异常发生时,H
我正在写来自 Camel 和 Spring 的世界! 我正在使用此 recipe 以编程方式添加路由. 基本上,您获取 Camel 上下文并使用文件添加路线。 这就是问题: 在运行时添加的路由不会触发
我正在尝试使用 ExceptionFilterAttribute 为 Web Api 实现异常处理。我已经继承了ExceptionFilterAttribute 类并覆盖了onException 方法
我在 Selenium 测试中使用自定义 WebDriverEventListener 来进行日志记录和屏幕截图。效果很好: 例如,当在浏览器窗口中找不到某个元素时,网络驱动程序会抛出异常,并正确触发
我在 Camel 环境中遇到onException问题。我使用的是通用错误处理程序,它会在发生异常时尝试使用xpath从交换中提取其他错误信息。 onException包含try/catch子句,可防
我正在探索一些 AOP,看来 .NET PostSharp 是可行的方法。 我想在发生异常时对数据库做一些简单的记录。然而,我发现很难找到任何超越基础知识的使用 PostSharp 的真正可靠的例子。
我有一个路由,doTry() - doCatch() 对用于特定路由和一般的 onException()。 onException(Exception.class) .handled(true
有什么区别: ... 和: ... 根据 this article ,结合使用它们是一个“强大的组合”。怎么会这样?他们各自承担什么角色,他们如何相互补充? 最佳答案 err
在这里尝试理解 MVC 管道: 顺序好像是这样的: 授权过滤器 OnActionExecuting Action 执行 OnActionExecuted OnResultExecuting 创建操作结
我有以下代码: [Serializable] class ExceptionAspectHandler:OnExceptionAspect { public overr
我是一名优秀的程序员,十分优秀!