常用API
本章节讲解默认使用Appium Clients为java-client-6.1.0.jar包,对应的Selenium使用selenium-server-standalone-3.12.0.jar包。
但是有一些老方法已经移除(如:swipe、tap),则讲解使用Appium Clients为java-client-4.1.2.jar包,对应的Selenium使用selenium-server-standalone-2.53.1.jar包。
1、锁屏
锁屏,仅支持IOS。
driver.lockDevice();
2、打开通知栏
打开通知栏,仅支持Android。
driver.openNotifications();
3、安装应用
在设备上安装应用。
driver.installApp("appPath");
4、卸载应用
卸载设备上的应用。
driver.removeApp("com.example.android.apis");
5、启动应用
启动应用。
driver.launchApp();
6、关闭应用
关闭应用。
driver.closeApp();
7、退出驱动程序
退出驱动程序并关闭所有相关窗口。
driver.quit();
8、检查应用是否已安装
检查应用是否已安装,返回True或False。
driver.isAppInstalled("com.example.android.apis");
9、将应用切换至后台
将当前的应用切换到后台,然后可以让其在指定时间内回到前台。
Appium Clients使用java-client-4.1.2.jar包;
Selenium使用selenium-server-standalone-2.53.1.jar包。
// 置于后台,持续5秒
driver.runAppInBackground(5);
10、切换上下文
切换上下文(context)。
driver.context("webview");
11、列出当前上下文
返回当前会话的当前上下文(context)。
driver.getContext();
12、列出所有上下文
列出当前会话中所有的上下文(context)。
context可以理解为可进入的窗口,如果是native则为native_app,如果是webview为对应webview。
driver.getContextHandles();
13、获取应用的字符串
获得应用的字符串。
driver.getAppStringMap();
14、隐藏键盘
隐藏键盘。
driver.hideKeyboard();
15、按住按键
给设备发送一个按键事件,仅支持Android。
Appium Clients使用java-client-4.1.2.jar包;
Selenium使用selenium-server-standalone-2.53.1.jar包。
所有键盘按键值可参考AndroidKeyCode类。
driver.pressKeyCode(AndroidKeyCode.HOME);
按键值参考按键码列表。
driver.pressKeyCode(4);
16、长按住按键
给设备发送一个长按住按键事件,仅支持Android。
Appium Clients使用java-client-4.1.2.jar包;
Selenium使用selenium-server-standalone-2.53.1.jar包。
所有键盘按键值可参考AndroidKeyCode类。
driver.longPressKeyCode(AndroidKeyCode.HOME);
按键值参考按键码列表。
driver.longPressKeyCode(4);
17、获取当前Package
获取在设备上运行的当前包(package),仅支持Android。
driver.getCurrentPackage();
18、启动Activity
在当前应用打开一个activity,或者新打开一个应用并启动一个acticity,仅支持Android。
代码语言:javascript复制Activity activity = new Activity("appPackage", "com.example.android.apis");
driver.startActivity(activity);
19、获取当前Activity
获取当前的activity,仅支持Android。
driver.currentActivity();
20、单击元素
单击元素。
driver.findElement(By.name("name")).click();
21、滑动
从(startx,starty)滑到(endx,endy),分duration步滑,滑动时间为毫秒。
Appium Clients使用java-client-4.1.2.jar包;
Selenium使用selenium-server-standalone-2.53.1.jar包。
swipe(int startx, int starty, int endx, int endy, int duration)
driver.swipe(200, 100, 200, 200, 1000);
22、输入
在元素中输入。
element.sendKeys("APPIUM");
element.setValue("APPIUM");
23、清除
如果此元素是文本元素,则将清除该值。
element.clear();
24、重置
重置应用(类似删除应用数据)。
driver.resetApp();
25、截图
截取当前窗口的截图。
代码语言:javascript复制File screenShot = driver.getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenShot,new File("D:/screen.png"));
26、模拟手指点击
模拟手指点击(最多五个手指),可设置按住时间长度(毫秒)。
Appium Clients使用java-client-4.1.2.jar包;
Selenium使用selenium-server-standalone-2.53.1.jar包。
代码语言:javascript复制// 点击element元素点按下,duration毫秒后松开,如此重复fingers次
driver.tap(int fingers, WebElement element, int duration);
// 点击坐标(x,y)点按下,duration毫秒后松开,如此重复fingers次
driver.tap(int fingers, int x, int y, int duration);
27、触控操作(TouchAction)
TouchAction的原理是将一系列的动作放在一个链条中,然后将该链条传递给服务器,服务器接收到该链条后,解析各个动作,逐个执行。
代码语言:javascript复制// 初始化TouchAction
// Android使用AndroidTouchAction类
// IOS使用IOSTouchAction类
AndroidTouchAction action = new AndroidTouchAction(driver);
// press按压操作
// 按压点坐标(X,Y)
action.press(PointOption.point(20, 30));
// longPress长按操作
// 长按点坐标(X,Y)
action.longPress(PointOption.point(20, 30));
// tap点击操作
// 点击坐标(X,Y)
action.tap(PointOption.point(20, 30));
// moveTo移动操作
// 以(X,Y)点为目标,从另一个点移动到该目标上
action.moveTo(PointOption.point(20, 30));
// release释放操作,代表该系列动作的一个结束标志
action.release();
// perform执行该动作发送到服务器的命令操作
action.perform();
// TouchAction示例
action.press(PointOption.point(300, 700)).moveTo(PointOption.point(150, -250)).release().perform();
28、上传文件
把本地文件上传到设备上。
代码语言:javascript复制String path = "/data/local/tmp/file.txt";
byte[] data = Base64.encodeBase64("some data for the file".getBytes());
driver.pushFile(path, data);
29、下载文件
从设备上拉取文件到本地。
driver.pullFile("Library/AddressBook/AddressBook.sqlitedb");
30、下载文件夹
将设备上的文件夹下载到本地,一般远程文件为/data/local/tmp下的文件。
driver.pullFolder(path);
31、获取页面源码
获取当前页的源。
driver.getPageSource();
32、获取元素文本值
返回元素的文本值。
driver.findElement(By.name("name")).getText();
33、获取元素属性值
get_attribute("name"),获取content-desc或text(content-desc为空时会返回text)属性值。
get_attribute("text"),获取text属性值。
get_attribute("className"),获取class属性值。
get_attribute("resourceId"),获取resource-id属性值。
例如:
driver.findElement(By.name("name")).getAttribute("text");
34、获取元素的tagName属性
返回元素的tagName属性。
driver.findElement(By.name("name")).getTagName();
35、返回元素是否被选中
可以用来检查一个复选框或单选按钮被选中。
driver.findElement(By.name("name")).isSelected();
36、返回元素是否可用
返回元素是否可用,True或者False。
driver.findElement(By.name("name")).isEnabled();
37、返回元素是否可见
元素是否对用户可见。
driver.findElement(By.name("name")).isDisplayed();
38、获取屏幕分辨率
获取当前窗口的宽度和高度。
driver.manage().window().getSize();
39、获取元素的大小
获取元素的大小(高和宽)。
driver.findElement(By.name("name")).getSize();
40、获取当前坐标位置
获取当前窗口的坐标(x,y)位置。
driver.manage().window().getPosition();
41、打开定位服务
打开安卓设备上的位置定位服务,仅支持Android。
driver.toggleLocationServices();
42、按键码列表
1、电话键
KEYCODE_CALL (拨号键) : 5
KEYCODE_ENDCALL (挂机键) : 6
KEYCODE_HOME (按键Home) : 3
KEYCODE_MENU (菜单键) : 82
KEYCODE_BACK (返回键) : 4
KEYCODE_SEARCH (搜索键) : 84
KEYCODE_CAMERA (拍照键) : 27
KEYCODE_FOCUS (拍照对焦键) :80
KEYCODE_POWER (电源键) : 26
KEYCODE_NOTIFICATION (通知键) : 83
KEYCODE_MUTE (话筒静音键) : 91
KEYCODE_VOLUME_MUTE (扬声器静音键) : 164
KEYCODE_VOLUME_UP (音量增加键) : 24
KEYCODE_VOLUME_DOWN (音量减小键) : 25
2、控制键
KEYCODE_ENTER (回车键) : 66
KEYCODE_ESCAPE (ESC键) : 111
KEYCODE_DPAD_CENTER (导航键 确定键) : 23
KEYCODE_DPAD_UP (导航键 向上) : 19
KEYCODE_DPAD_DOWN (导航键 向下) : 20
KEYCODE_DPAD_LEFT (导航键 向左) : 21
KEYCODE_DPAD_RIGHT (导航键 向右) : 22
KEYCODE_MOVE_HOME (光标移动到开始键) : 122
KEYCODE_MOVE_END (光标移动到末尾键) : 123
KEYCODE_PAGE_UP (向上翻页键) : 92
KEYCODE_PAGE_DOWN (向下翻页键) : 93
KEYCODE_DEL (退格键) : 67
KEYCODE_FORWARD_DEL (删除键) : 112
KEYCODE_INSERT (插入键) : 124
KEYCODE_TAB (Tab键) : 61
KEYCODE_NUM_LOCK (小键盘锁) : 143
KEYCODE_CAPS_LOCK (大写锁定键) : 115
KEYCODE_BREAK (Break/Pause键) : 121
KEYCODE_SCROLL_LOCK (滚动锁定键) : 116
KEYCODE_ZOOM_IN (放大键) : 168
KEYCODE_ZOOM_OUT (缩小键) : 169
3、基本键
KEYCODE_0 (按键'0') : 7
KEYCODE_1 (按键'1') : 8
KEYCODE_2 (按键'2') : 9
KEYCODE_3 (按键'3') : 10
KEYCODE_4 (按键'4') : 11
KEYCODE_5 (按键'5') : 12
KEYCODE_6 (按键'6') : 13
KEYCODE_7 (按键'7') : 14
KEYCODE_8 (按键'8') : 15
KEYCODE_9 (按键'9') : 16
KEYCODE_A (按键'A') : 29
KEYCODE_B (按键'B') : 30
KEYCODE_C (按键'C') : 31
KEYCODE_D (按键'D') : 32
KEYCODE_E (按键'E') : 33
KEYCODE_F (按键'F') : 34
KEYCODE_G (按键'G') : 35
KEYCODE_H (按键'H') : 36
KEYCODE_I (按键'I') : 37
KEYCODE_J (按键'J') : 38
KEYCODE_K (按键'K') : 39
KEYCODE_L (按键'L') : 40
KEYCODE_M (按键'M') : 41
KEYCODE_N (按键'N') : 42
KEYCODE_O (按键'O') : 43
KEYCODE_P (按键'P') : 44
KEYCODE_Q (按键'Q') : 45
KEYCODE_R (按键'R') : 46
KEYCODE_S (按键'S') : 47
KEYCODE_T (按键'T') : 48
KEYCODE_U (按键'U') : 49
KEYCODE_V (按键'V') : 50
KEYCODE_W (按键'W') : 51
KEYCODE_X (按键'X') : 52
KEYCODE_Y (按键'Y') : 53
KEYCODE_Z (按键'Z') : 54