appium()-The event firing
原文地址:https://github.com/appium/java-client/blob/master/docs/The-event_firing.md
since 4.1.0
The purpose
This feature allows end user to organize the event logging on the client side. Also this feature may be useful in a binding with standard or custom reporting frameworks.//这个功能是用来组织客户端事件日志,便于分析测试细节和撰写测试报告。
The API
The API was designed the way which allows end user to select events (searching, navigation, exception throwing etc.) which should be listened to. It contains the following list of interfaces (new items may be added further)://有如下API。
io.appium.java_client.events.api.Listeneris the basic interfaceio.appium.java_client.events.api.general.AlertEventListeneris for the listening to alertsio.appium.java_client.events.api.general.ElementEventListeneris for the listening to actions related to elementsio.appium.java_client.events.api.general.JavaScriptEventListeneris for the listening to java script executingio.appium.java_client.events.api.general.ListensToExceptionis for the listening to exceptions which are thrownio.appium.java_client.events.api.general.NavigationEventListeneris for the listening to events related to navigationio.appium.java_client.events.api.general.SearchingEventListeneris for the listening to events related to the searching.io.appium.java_client.events.api.general.WindowEventListeneris for the listening to actions on a windowio.appium.java_client.events.api.mobile.ContextEventListeneris for the listening to the switching to mobile contextio.appium.java_client.events.api.mobile.RotationEventListeneris for the listening to screen rotationio.appium.java_client.events.api.general.AppiumWebDriverEventListenerwas added to provide the compatibility with user's implementation oforg.openqa.selenium.support.events.WebDriverEventListener. Also it extends some interfaces above.
Briefly about the engine.
This is pretty similar solution as the org.openqa.selenium.support.events.EventFiringWebDriver of the Selenium project. You can read about this thing there The blog post.//这个功能来源于selenium,但克服了selenium中每次只能监听一个事件的缺点。
Here we were trying to improve existing drawbacks and restrictions using:
API splitting, see above.
the binding of some Spring framework engines with AspectJ.
How to use
It is easy.//使用方法:将driver和被监听的事件传入EventFiringWebDriverFactory。
import io.appium.java_client.events.api.general.AlertEventListener;
public class AlertListener implements AlertEventListener {
...
}
...
import io.appium.java_client.events.api.general.ElementEventListener;
public class ElementListener implements ElementEventListener {
...
}
//and so on
...
import io.appium.java_client.events.EventFiringWebDriverFactory;
import io.appium.java_client.events.api.Listener;
...
AndroidDriver driver = new AndroidDriver(parameters);
driver = EventFiringWebDriverFactory.getEventFiringWebDriver(driver, new AlertListener(),
new ElementListener());
//or
AndroidDriver driver2 = new AndroidDriver(parameters);
List<Listener> listeners = new ArrayList<>();
listeners.add(new AlertListener());
listeners.add(new ElementListener());
driver = EventFiringWebDriverFactory.getEventFiringWebDriver(driver2, listeners);
What if there are listeners which used everywhere by default.
In order to avoid the repeating actions an end user is free to do these things://高级用法:将监听事件作为一种自动启动的服务,不必显式地监听。这种用法来源于java自身的SPI。
- create folders
/META-INF/servicesand put the fileio.appium.java_client.events.api.Listenerthere. Please read aboutSPI.//创建/META-INF/services文件夹,把一个文件放到其中。

- define the list of default listeners at the
io.appium.java_client.events.api.Listener//在文件中定义默认的被监听的事件。

And then it is enough//使用监听事件。
//and so on
...
import io.appium.java_client.events.EventFiringWebDriverFactory;
... AndroidDriver driver = new AndroidDriver(parameters);
driver = EventFiringWebDriverFactory.getEventFiringWebDriver(driver);
If there are listeners defined externally when this collection is merged with default set of listeners.
How to reuse customized WebDriverEventListener
If an end user has their own org.openqa.selenium.support.events.WebDriverEventListener implementation then in order to make it compatible with this engine it is enough to do the following.//高级用法:扩展被监听的事件。
import org.openqa.selenium.support.events.WebDriverEventListener;
import io.appium.java_client.events.api.general.AppiumWebDriverEventListener; public class UsersWebDriverEventListener implements WebDriverEventListener, AppiumWebDriverEventListener {
...
}
or just
import io.appium.java_client.events.api.general.AppiumWebDriverEventListener;
public class UsersWebDriverEventListener implements AppiumWebDriverEventListener {
...
}
appium()-The event firing的更多相关文章
- Programmatically Disable Event Firing on List Item Update in SharePoint 2010
1. Microsoft.SharePoint.dll Create EventFiring.cs 1.Right-click on the project, select Add and click ...
- appium()-java-client-api
//appium java-client-api 介绍 原文地址:http://appium.github.io/java-client/index-all.html#_S_ A B C D E F ...
- appium(11)-java-client
Welcome to the Appium Java client wiki! This framework is an extension of the Selenium Java client. ...
- AngularJS 系列 01 - HelloWorld和数据绑定
目录导读: AngularJS 系列 学习笔记 目录篇 前言: 好记性不如烂键盘,随笔就是随手笔记,希望以后有用. 本篇目录: 1. Hello World 2. AngularJS中的数据绑定 3. ...
- seajs源码分析
seajs主要做了2件事 1.定义什么是模块,如何声明模块:id.deps.factory.exports ----define=function(id,deps,factory){return ex ...
- 自己修改的两个js文件
sea-base.js /** * Sea.js 2.2.3 | seajs.org/LICENSE.md */ (function(global, undefined) { // Avoid con ...
- HelloWorld和数据绑定
HelloWorld和数据绑定 目录导读: AngularJS 系列 学习笔记 目录篇 前言: 好记性不如烂键盘,随笔就是随手笔记,希望以后有用. 本篇目录: 1. Hello World 2. An ...
- seajs源码
/*** Sea.js 3.0.0 | seajs.org/LICENSE.md 中文注释由 李祥威 添加,为个人对细节的理解,官方解释很详细的地方就不说了 难免有错漏,联系我: chuangweil ...
- 5 Protocols For Event-Driven API Architectures
The internet is a system of communication, and as such, the relationship between client and server, ...
随机推荐
- HRBUST 2072:萌萌哒十五酱的礼物~(树,字典树)
题意:n个点的一棵树,树的边上有权值.一条路径的权值定义成这条路径上所有边的权值的xor.问所有路径的最大权值是多少. 思路: 首先,树上任意两点之间的路可以表示成 这两点到根节点的路- 其最近公共祖 ...
- Kafka应用实践与生态集成
1.前言 Apache Kafka发展至今,已经是一个很成熟的消息队列组件了,也是大数据生态圈中不可或缺的一员.Apache Kafka社区非常的活跃,通过社区成员不断的贡献代码和迭代项目,使得Apa ...
- HDU 4587 TWO NODES 枚举+割点
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4587 TWO NODES Time Limit: 24000/12000 MS (Java/Other ...
- Deep learning with PyTorch: A 60 minute blitz _note(1) Tensors
Tensors 1. construst matrix 2. addition 3. slice from __future__ import print_function import torch ...
- Ubuntu 16.04中的Dock的应用顺序调整
操作步骤: 参考: https://askubuntu.com/questions/39805/is-there-an-easy-way-to-rearrange-or-move-the-icons- ...
- nginx和php通信
#启动php-fpm服务 #配置nginx.conf worker_processes ; worker_rlimit_nofile ; worker_cpu_affinity ; #error_lo ...
- DBCC
http://www.cnblogs.com/lyhabc/archive/2013/01/19/2867174.html http://www.cnblogs.com/lyhabc/articles ...
- android中setClickable,setEnabled,setFocusable的含义及区别
setClickable 设置为true时,表明控件可以点击,如果为false,就不能点击:“点击”适用于鼠标.键盘按键.遥控器等: 注意,setOnClickListener方法会默认把控件的se ...
- QlikView显示所选时间前一年的数据
客户常常提出这种需求,当用户选择某一时间时.图表中显示所选时间之前一年的数据.以下是我的方法.如有不当,请多不吝赐教: 数据准备例如以下所看到的: SalesData: LOAD Num(ID) as ...
- NoSQL数据库-MongoDB和Redis
http://blog.csdn.net/tea_wu/article/details/19050277 http://www.uml.org.cn/sjjm/201212205.asp