前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动化-Appium-常用API(Java版)

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

作者头像
wangmcn
发布2022-07-25 13:25:34
1.7K0
发布2022-07-25 13:25:34
举报
文章被收录于专栏:AllTests软件测试

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AllTests软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、锁屏
  • 2、打开通知栏
  • 3、安装应用
  • 4、卸载应用
  • 5、启动应用
  • 6、关闭应用
  • 7、退出驱动程序
  • 8、检查应用是否已安装
  • 9、将应用切换至后台
  • 10、切换上下文
  • 11、列出当前上下文
  • 12、列出所有上下文
  • 13、获取应用的字符串
  • 14、隐藏键盘
  • 15、按住按键
  • 16、长按住按键
  • 17、获取当前Package
  • 18、启动Activity
  • 19、获取当前Activity
  • 20、单击元素
  • 21、滑动
  • 22、输入
  • 23、清除
  • 24、重置
  • 25、截图
  • 26、模拟手指点击
  • 27、触控操作(TouchAction)
  • 28、上传文件
  • 29、下载文件
  • 30、下载文件夹
  • 31、获取页面源码
  • 32、获取元素文本值
  • 33、获取元素属性值
  • 34、获取元素的tagName属性
  • 35、返回元素是否被选中
  • 36、返回元素是否可用
  • 37、返回元素是否可见
  • 38、获取屏幕分辨率
  • 39、获取元素的大小
  • 40、获取当前坐标位置
  • 41、打开定位服务
  • 42、按键码列表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档