自动化-Appium-常用API(Java版)

2022-07-25 13:25:34 浏览数 (1)

常用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

0 人点赞