app测试 - 元素操作

437 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第26天,点击查看活动详

元素操作 - 元素操作的常用方法

点击操作
element.click()
清空和输入操作
element.clear()  # 清空操作
element.send_keys('value')  # 针对元素进行输入操作是、
输入的封装
# 先清空输入框再输入内容
def ele_inp(element, value):
    element.clear()
    element.send_keys(value)

元素操作 - 获取元素信息

获取元素的文本内容

获取的是元素的text属性的内容:

element..text
获取元素的位置

获取元素的左上角的位置。

element.location
# 返回的值是一个字典,字典中包含x和y
获取元素的大小

元素位置和元素大小结合就可以实现点击元素的任何一个位置

element.size
# 返回值是字典,字典中会包含width和height
获取元素的属性值

获取ID:属性名称是'resourceId': element.get_attribute('resourceId') 获取类属性:className: element.get_attribute('className') 如果属性名称是name的话,返回的属性值可能是text属性的值或者是content-desc的值,text优先,如果text找不到就去找content-desc的值。

element.get_attribute('属性名称')

解决不能输入中文的问题

在初识化字典的时候增加两个键值对

# 初始化app的配置信息,是一个字典
des_cap = {
    "platformName": "android",  # 操作系统
    "platformVersion": "5.1.1",  # 操作系统版本
    "deviceName": "****",  # 如果只连接一个设备,可以使用****代替,如果有多个设备需要写设备ID
    "appPackage": "com.bjcsxq.chat.carfriend",  # app的包名
    "appActivity": "com.bjcsxq.chat.carfriend.module_main.activity.SplashActivity",  # 表示app的界面名,使用aapt获取界面名
    # 解决不能输入中文的问题      
    "resetKeyBoard": True,
    "unicodeKeyBoard": True
}

驱动操作 - 区分首次打开还是非首次打开

比如说学车不app,首次打开会让同意协议。因此在代码中可以通过查找该元素判断是否首次打开还是肥瘦才打开

# 初始化app的配置信息,是一个字典
des_cap = {
    "platformName": "android",  # 操作系统
    "platformVersion": "5.1.1",  # 操作系统版本
    "deviceName": "****",  # 如果只连接一个设备,可以使用****代替,如果有多个设备需要写设备ID
    "appPackage": "com.bjcsxq.chat.carfriend",  # app的包名
    "appActivity": "com.bjcsxq.chat.carfriend.module_main.activity.SplashActivity",  # 表示app的界面名,使用aapt获取界面名
    # 解决不能输入中文的问题      
    "resetKeyBoard": True,
    "unicodeKeyBoard": True
    
    # 用来记住app的session,当为True时,如果有登录过或者做过初始化的操作,后面就不需要进行操作
    # 可以记住登录状态
    "noReset": True
}

驱动操作 - 获取手机屏幕分辨率和窗口截图

获取手机分辨率

目的是保证脚本在不同的机型上都能实现滑屏的操作,通过分辨率的百分比获取坐标位置,就无须指定固定的坐标点。

# 获取手机屏幕分辨率,返回的值是字典类型包含heightwidth
driver.get_window_size()
获取手机截图

当脚本报错的时候对屏幕进行截图:

# Saves a screenshot of the current window to a PNG image file. Returns False if there is any IOError, else returns True. Use full paths in your filename.
driver.get_screenshot_as_file(filename='path')

获取设置手机网络

场景:播放视频或者音乐时,如果有wifi切换到流量,可能会出现提示信息,询问是否进行播放。

目的:主要是为了实现视频类的app中,对视频播放过程中网络切换时的提示信息的操作。

获取当前手机网络类型
conn_type = driver.network_connection
设置手机网络
driver.set_network_connection(connection_type=1)
# 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             |
+--------------------+------+------+---------------+
'''

模拟键盘操作

3:HOME键

4:返回键

66:回车键

更多键值请参考http://developer.android.com/reference/android/view/KeyEvent.html.

driver.press_keycode(keycode=3)

打开手机通知栏

driver.open_notifications()