java appium_Android应用开发之AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试)...
本文将带你了解Android应用开发AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试),希望本文对大家学Android有所帮助。
一、为什么需要封装?
封装的本意就是为了方便、简洁。
二、Android的显式等待封装
1. AndroidDriverWait.java
package com.example.base;
/**
* Created by LITP on 2016/9/8.
*/
import org.openqa.selenium.NotFoundException;
import org.openqa.selenium.TimeoutException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.Clock;
import org.openqa.selenium.support.ui.FluentWait;
import org.openqa.selenium.support.ui.Sleeper;
import org.openqa.selenium.support.ui.SystemClock;
import java.util.concurrent.TimeUnit;
import io.appium.java_client.android.AndroidDriver;
public class AndroidDriverWait extends FluentWait {
public final static long DEFAULT_SLEEP_TIMEOUT = 500;
private final WebDriver driver;
public AndroidDriverWait(AndroidDriver driver, long timeOutInSeconds) {
this(driver, new SystemClock(), Sleeper.SYSTEM_SLEEPER, timeOutInSeconds, DEFAULT_SLEEP_TIMEOUT);
}
public AndroidDriverWait(AndroidDriver driver, long timeOutInSeconds, long sleepInMillis) {
this(driver, new SystemClock(), Sleeper.SYSTEM_SLEEPER, timeOutInSeconds, sleepInMillis);
}
public AndroidDriverWait(AndroidDriver driver, Clock clock, Sleeper sleeper, long timeOutInSeconds,
long sleepTimeOut) {
super(driver, clock, sleeper);
withTimeout(timeOutInSeconds, TimeUnit.SECONDS);
pollingEvery(sleepTimeOut, TimeUnit.MILLISECONDS);
ignoring(NotFoundException.class);
this.driver = driver;
}
@Override
protected RuntimeException timeoutException(String message, Throwable lastException) {
TimeoutException ex = new TimeoutException(message, lastException);
ex.addInfo(WebDriverException.DRIVER_INFO, driver.getClass().getName());
if (driver instanceof RemoteWebDriver) {
RemoteWebDriver remote = (RemoteWebDriver) driver;
if (remote.getSessionId() != null) {
ex.addInfo(WebDriverException.SESSION_ID, remote.getSessionId().toString());
}
if (remote.getCapabilities() != null) {
ex.addInfo("Capabilities", remote.getCapabilities().toString());
}
}
throw ex;
}
}
2.ExpectedCondition.java
接口
package com.example.base;
import com.google.common.base.Function;
import io.appium.java_client.android.AndroidDriver;
/**
* Created by LITP on 2016/9/8.
*/
public interface ExpectedCondition extends Function {}
3. 使用
/**
* 显示等待,等待Id对应的控件出现time秒,一出现马上返回,time秒不出现也返回
*/
public AndroidElement waitAuto(By by, int time) {
try {
return new AndroidDriverWait(driver, time)
.until(new ExpectedCondition() {
@Override
public AndroidElement apply(AndroidDriver androidDriver) {
return (AndroidElement) androidDriver.findElements(by);
}
});
} catch (TimeoutException e) {
Assert.fail("查找元素超时!! " + time + " 秒之后还没找到元素 [" + by.toString() + "]", e);
return null;
}
}
三、Assert断言的封装
封装了 出现错误输出了异常信息但不终止程序的运行,会继续往下执行。
1.Assertion.java
package com.example.base;
import org.testng.Assert;
import java.util.ArrayList;
import java.util.List;
/**
* Created by LITP on 2016/9/21.
*/
public class Assertion {
public static boolean flag = true; //是否有错误
public static List errors = new ArrayList<>(); //错误集合
/**
* 验证值是否相等
* @param actual 第一个值
* @param expected 要对比的值
*/
public static void verifyEquals(Object actual, Object expected){
try{
Assert.assertEquals(actual, expected);
}catch(Error e){
errors.add(e);
flag = false;
}
}
/**
* 验证值是否相等
* @param actual 第一个值
* @param expected 要对比的值
* @param message 出错时候的提示消息
*/
public static void verifyEquals(Object actual, Object expected, String message){
try{
Assert.assertEquals(actual, expected, message);
}catch(Error e){
errors.add(e);
flag = false;
}
}
}
2.AssertionListener.java
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!
java appium_Android应用开发之AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试)...相关推荐
- Java游戏服务器开发之A星算法
Java游戏服务器开发之A星算法 学习这个主要是用于寻路算法. 参考资料主要是siki学院的视频,A计划--人工智能--A星算法. 网址http://www.sikiedu.com/cou ...
- unity android屏幕自适应,Android应用开发之unity打开移动摄像头,并自适应屏幕显示摄像头数据。兼容android和ios...
本文将带你了解Android应用开发之unity打开移动摄像头,并自适应屏幕显示摄像头数据.兼容android和ios,希望本文对大家学Android有所帮助. 跨平台并自适应显示摄像头数据新建工程并 ...
- Appium+Python安卓自动化测试之启动APP和配置获取
Appium+Python安卓自动化测试之启动APP和配置获取 本文章未讲述appium+python环境部署,环境部署会新开文章 一.手机连接电脑 1.USB连接电脑和手机,手机上点确认连接(最好用 ...
- java 写jsp_Java开发之JSP指令
一.page指令 page指令是最常用的指令,用来说明JSP页面的属性等.JSP指令的多个属性可以写在一个page指令里,也可以写在多个指令里.但需要注意的是,无论在哪个page指令里的属性,任何pa ...
- 自动化测试之Appium
文章目录 问题归整 1. [华为手机如何打开开发者权限](https://jingyan.baidu.com/article/49ad8bce96e1955835d8fa57.html) 2. 报错, ...
- |app自动化测试之Appium问题分析及定位
Appium 是由 Node.js 来实现的 HTTP 服务,它并不是一套全新的框架,而是将现有的优秀的框架进行了集成,在 Selenium WebDriver 协议(JsonWireProtocol ...
- 干货|app自动化测试之Appium 原理 与 JsonWP 协议分析
想要使用 Appium 进行测试,那么就一定要先了解Appium的原理.Appium 不仅能够实现移动端的 JSONWP,并且延伸到了 Selenium 的 JSONWP,它能够控制不同移动设备的行为 ...
- 干货|app自动化测试之Appium 源码修改定制分析
Appium 是由 Node.js 来实现的 HTTP 服务,它并不是一套全新的框架,而是将现有的优秀的框架进行了集成,在 Selenium WebDriver 协议(JsonWireProtocol ...
- app自动化测试之Appium问题分析及定位
使用 Appium 进行测试时,会产生大量日志,一旦运行过程中遇到报错,可以通过 Appium 服务端的日志以及客户端的日志分析排查问题. Appium Server日志-开启服务 通过命令行的方式启 ...
最新文章
- Linux之Redis的启动、使用和停止
- LightOJ 1205 Palindromic Numbers
- linux sort
- OpenGL 期末考试作业
- 百度更新算法之后我想说
- 学习 Linux/C/C++ 必备资料
- 3-34Pytorch与nn库
- 转:开启nginx的gzip压缩的相关参数设置
- 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第2节 maven的安装和仓库种类_04maven的安装...
- STM32矩阵键盘的实现原理
- 韦根(Wiegand协议)
- 【JavaSE基础 】Eclipse教程
- win7系统如何添加环境变量
- CSR8311/CSR8811 HCI vendor command说明
- java笔记--多敲代码四
- 使用 PyGame 显示图像的四种方案
- 选择灰盒安全测试工具,看准以下几点
- jsoup爬取网站信息之《冰与火之歌》
- C++读取音频文件mp3、flac的曲名、歌手、专辑等ID3v2标签(使用libzplay)
- Thinkphp开发视频打赏平台源码