常用API
锁屏多少秒后解锁,仅支持IOS。
driver.lock(5)
打开通知栏,仅支持Android。
driver.open_notifications()
在设备上安装应用。
driver.install_app('appPath')
卸载设备上的应用。
driver.remove_app('com.example.android.apis')
启动应用。
driver.launch_app()
关闭应用。
driver.close_app()
退出驱动程序并关闭所有相关窗口。
driver.quit()
检查应用是否已安装,返回True或False。
driver.is_app_installed('com.example.android.apis')
将当前的应用切换到后台,然后可以让其在指定时间内回到前台。
# 置于后台,持续5秒
driver.background_app(5)
切换上下文(context)。
driver.switch_to.context("webview")
返回当前会话的当前上下文(context)。
driver.context
driver.current_context
列出当前会话中所有的上下文(context)。
context可以理解为可进入的窗口,如果是native则为native_app,如果是webview为对应webview。
driver.contexts
获得应用的字符串。
driver.app_strings
隐藏键盘。
driver.hide_keyboard()
给设备发送按键事件,仅支持Android。按键值参考按键码列表。
driver.keyevent(4)
给设备发送一个按键事件,仅支持Android。按键值参考按键码列表。
driver.press_keycode(4)
给设备发送一个长按住按键事件,仅支持Android。按键值参考按键码列表。
driver.long_press_keycode(4)
获取在设备上运行的当前包(package),仅支持Android。
driver.current_package
在当前应用打开一个activity,或者新打开一个应用并启动一个acticity,仅支持Android。
driver.start_activity("app_package", "app_activity")
获取当前的activity,仅支持Android。
driver.current_activity
等待指定的activity出现直到超时,interval为扫描间隔1秒,即每隔几秒获取一次当前的activity。返回的True或False,仅支持Android。
driver.wait_activity(activity, timeout, interval=1)
driver.wait_activity('.activity.xxx',5,2)
单击元素。
driver.find_element_by_name("name").click()
从(startx,starty)滑到(endx,endy),分duration步滑,滑动时间为毫秒。
driver.swipe(startx, starty, endx, endy, duration)
driver.swipe(100, 100, 100, 400, 1000)
按住(startx,starty)点后快速滑动至(endx,endy)点。
flick方法和swipe方法一样需要确定起点和终点坐标,只是没有时间参数。
driver.flick(startx, starty, endx, endy)
driver.flick(100, 100, 100, 400)
将元素el1拖到目标元素el2。
driver.drag_and_drop(el1,el2)
在元素上执行模拟双指捏(缩小操作)。
driver.pinch(element)
在元素上执行放大操作。
driver.zoom(element)
从元素el1滚动至元素el2。
driver.scroll(el1, el2)
在元素中输入。
element.send_keys("APPIUM")
有时需要直接在设备上设置元素的值。可用方法driver.set_value或element.set_value。
el = driver.find_elements_by_id("id")
driver.set_value(el,'APPIUM')
el.set_value('APPIUM')
如果此元素是文本元素,则将清除该值。
element.clear()
模拟摇晃(摇一摇)设备的操作。
driver.shake()
重置应用(类似删除应用数据)。
driver.reset()
截取当前窗口的截图。
driver.get_screenshot_as_file('/Screenshots/foo.png')
模拟手指点击(最多五个手指),可设置按住时间长度(毫秒)。
driver.tap([(x,y),(x1,y1)],500)
driver.tap([(100, 20), (100, 60), (100, 100)], 500)
TouchAction的原理是将一系列的动作放在一个链条中,然后将该链条传递给服务器,服务器接收到该链条后,解析各个动作,逐个执行。
# 引用类from appium.webdriver.common.touch_action import TouchAction
# press按压操作
# 按压元素
TouchAction(driver).press(WebElement el)
# 按压点坐标(X,Y)
TouchAction(driver).press(x=X,y=Y)
# 按压在元素el的左上角的x坐标偏移X单位,y坐标偏移Y单位
TouchAction(driver).press(WebElement el,x=X,y=Y)
# long_press长按操作,相比press,long_press多了一个参数duration,以毫秒为单位(1000为1秒)
TouchAction(driver).long_press()
# 长按元素
TouchAction(driver).long_press(WebElement el)
# 长按点坐标(X,Y)
TouchAction(driver).long_press(x=X,y=Y,int=1000)
# 长按在元素el的左上角的x坐标偏移X单位,y坐标偏移Y单位
TouchAction(driver).long_press(WebElement el,x=X,y=Y,int=1000)
# tap点击操作
# 点击元素
TouchAction(driver).tap(WebElement el)
# 点击坐标(X,Y)
TouchAction(driver).tap(x=X,y=Y)
# 点击在元素el的左上角的x坐标偏移X单位,y坐标偏移Y单位
TouchAction(driver).tap(WebElement el,x=X,y=Y)
# move_to移动操作
# 以el为目标,从另一个点移动到该目标上
TouchAction(driver).move_to(WebElement el)
# 以(X,Y)点为目标,从另一个点移动到该目标上
TouchAction(driver).move_to(x=X,y=Y)
# 以元素el的左上角为基准,x轴向右移动X单位,y轴向下移动Y单位,以该点为目标,从另一个点移动到该点上
TouchAction(driver).move_to(WebElement el,x=X,y=Y)
# wait暂停操作,单位为毫秒
# 等待ms毫秒
TouchAction(driver).wait(ms)
# release释放操作,代表该系列动作的一个结束标志
TouchAction(driver).release()
# perform执行该动作发送到服务器的命令操作
TouchAction(driver).perform()
# TouchAction示例
# 向下滑动
TouchAction(driver).press(x=170, y=430).wait(20).move_to(x=170, y=230).release().perform()
把本地文件上传到设备上。
path = "/data/local/tmp/file.txt"
data = "some data for the file"
driver.push_file(path, data.encode('base64'))
从设备上拉取文件到本地。
driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')
将设备上的文件夹下载到本地,一般远程文件为/data/local/tmp下的文件。
driver.pull_folder(path)
获取当前页的源。
driver.page_source
返回元素的文本值。
driver.find_element_by_name("name").text
get_attribute("name"),获取content-desc或text(content-desc为空时会返回text)属性值。
get_attribute("text"),获取text属性值。
get_attribute("className"),获取class属性值。
get_attribute("resourceId"),获取resource-id属性值。
例如:
driver.find_element_by_name("name").get_attribute("text")
返回元素的tagName属性。
driver.find_element_by_name("name").tag_name
可以用来检查一个复选框或单选按钮被选中。
driver.find_element_by_name("name").is_selected()
返回元素是否可用,True或者False。
driver.find_element_by_name("name").is_enabled()
元素是否对用户可见。
driver.find_element_by_name("name").is_displayed()
获取当前窗口的宽度和高度。
driver.get_window_size()
设置当前窗口的宽度和高度。
driver.set_window_size(800,600)
获取元素的大小(高和宽)。
driver.find_element_by_name("name").size
获取当前窗口的坐标(x,y)位置。
driver.get_window_position()
获取网络类型(数值),仅支持Android。
driver.network_connection
设置网络连接类型,仅支持Android。
driver.set_network_connection(type)
Value (Alias) | Data | Wifi | Airplane Mode
-------------------------------------------------
0 (None) | 0 | 0 | 0
1 (Airplane Mode) | 0 | 0 | 1
2 (Wifi only) | 0 | 1 | 0
4 (Data only) | 1 | 0 | 0
6 (All network on) | 1 | 1 | 0
type参数:
NO_CONNECTION = 0
AIRPLANE_MODE = 1
WIFI_ONLY = 2
DATA_ONLY = 4
ALL_NETWORK_ON = 6
例如:
from appium.webdriver.connectiontype import ConnectionType
driver.set_network_connection(ConnectionType.AIRPLANE_MODE)
打开安卓设备上的位置定位服务,仅支持Android。
driver.toggle_location_services()
设置设备的经纬度。
纬度-字符串或数值(-90.0至90.00)
经度-字符串或数值(-180.0至180.0)
高度-字符串或数值
driver.set_location(纬度,经度,高度)
获取Android设备可用的输入法,返回Package和Activity。
例如:com.android.inputMethod.latin/.LatinIME,仅支持Android。
driver.available_ime_engines
返回当前输入法的Package和Activity,例如:com.android.inputMethod.latin/.LatinIME,仅支持Android。
driver.active_ime_engine
检查设备是否有输入法服务活动,返回True或者False,仅支持Android。
driver.is_ime_active()
激活Android设备中的指定输入法,设备可用输入法可以从available_ime_engines命令获取,仅支持Android。
driver.activate_ime_engine("com.android.inputmethod.latin /.LatinIME")
关闭Android设备当前的输入法,仅支持Android。
driver.deactivate_ime_engine()
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
本文分享自 AllTests软件测试 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!