appium应用之“获取设备信息和设备操作”(android)

2019-04-11  本文已影响0人  rr1990

一、获取设备信息

1. 获取设备大小

window_size = driver.get_window_size()
print(window_size)      # {'width': 1080, 'height': 1920}

2. 获取设备上下文信息

# 获取所有的上下文
all_contexts = driver.contexts
print(all_contexts)         # ['NATIVE_APP']
# 获取当前上下文
cur_context = driver.context
print(cur_context)          # NATIVE_APP
cur_context1 = driver.current_context
print(cur_context1)         # NATIVE_APP

3. 获取当前应用的信息

app_activity = driver.current_activity
print(app_activity)         # .MainSettings
app_package = driver.current_package
print(app_package)          # com.android.settings

二、设备操作

1. 等待activity出现操作

# 判断10s内是否已成功进入所需的目标activity
desired_caps = {'platformName': 'Android',
                'platformVersion': '8.1',
                'deviceName': 'XXX',
                'automationName': 'Appium',
                'noReset': 'true',
                'unicodeKeyboard': 'true',
                'resetKeyboard': 'true',
                'appPackage': 'com.kugou.android',
                'appActivity': '.app.splash.SplashActivity'
                }
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
is_target_activity = driver.wait_activity("com.kugou.common.useraccount.app.KgUserLoginAndRegActivity", 10)
if is_target_activity is True:
    print("成功进入目标主页面,可继续执行其他操作")
else:
    print("超过未进入目标主页面")

2. 退出设备操作

3. android按键操作

常用按键的keycode:
    KEYCODE_HOME(home键):3
    KEYCODE_BACK(back键):4
    KEYCODE_SEARCH(搜索键):84
    KEYCODE_ENTER(回车键):66
    KEYCODE_MENU(菜单键):82
    KEYCODE_POWER(电源键):26
    KEYCODE_NOTIFICATION(通知键):83 
    KEYCODE_CALL(拨号键):5
    KEYCODE_ENDCALL(挂机键):6
    ...
3.1. 点击按键
3.2. 长按按键
# 点击home键
driver.press_keycode(3)
driver.keyevent(3)
# 长按home键
driver.long_press_keycode(3)

4. 模拟手势点击坐标点操作

4.1. tap函数方法介绍
4.2. 获取元素坐标方法

(1)通过元素的bounds值来获取点击坐标:
元素的bounds值格式为 [x1, y1][x2, y2],x1和y1为元素的左上角位置,x2和y2为元素的右下角位置。
但赋值给positions参数,需要将格式更改一下,改为 [(x1, y1), (x2, y2)]
(2)手动获取元素坐标
机器进入“开发者选项”,开启“指针位置”,手动点击元素从而获取元素的坐标

# 长按点击元素坐标,同时保持500ms再释放
driver.tap( [(204, 358), (790, 496)], 500)
driver.press_keycode(4)
driver.tap([(204, 358)], 500)
driver.press_keycode(4)
# 点击元素坐标
driver.tap([(204, 358), (790, 496)])
driver.press_keycode(4)
driver.tap([(204, 358)])

5. 滑动操作

5.1. swipe和flick函数方法介绍
5.2. 说明

可用于将整个屏幕或某个元素执行向左、向右、向上、向下滑动;也可用于从某个坐标点滑动到另一个坐标点。
由于测试过程中会不断使用到swipe函数的滑动操作,故可将屏幕或元素向左、向右、向上、向下滑动进行封装,以便下次直接使用。

# 向上滑动屏幕:先获取屏幕的宽度和高度,再将屏幕从下往上滑动
window_size = driver.get_window_size()
start_x = window_size['width'] * 0.5
start_y = window_size['height'] * 0.75
end_y = window_size['height'] * 0.25
driver.swipe(start_x, start_y, start_x, end_y, 500)
# 向上滑动元素:先获取元素的起始坐标、宽度和高度,再将元素从下往上滑动
element = driver.find_element_by_id("android:id/list")
ele_rect = element.rect
start_x1 = ele_rect['x'] + ele_rect['width'] * 0.5
start_y1 = ele_rect['y'] + ele_rect['height'] * 0.75
end_y2 = ele_rect['y'] + ele_rect['height'] * 0.25
driver.swipe(start_x1, start_y1, start_x1, end_y2, 500)
# 直接使用坐标点向上滑动屏幕
driver.swipe(500, 700, 500, 300, 500)
# 快速滑动
driver.flick(start_x, start_y, start_x, end_y)

6. app操作

6.1. app的安装、卸载、判断
6.2. app后台运行、启动、重置、关闭、终止操作
# 安装app
driver.install_app("F:\\test.apk")
# 判断app是否已安装
is_installed = driver.is_app_installed("com.tencent.wstt.gt")
print(is_installed)
# 关闭desired capabilities参数中的应用
driver.close_app()
# 启动desired capabilities参数中的应用
driver.launch_app()
# 后台运行设备当前的应用
driver.background_app(5)
# 重置设备当前的应用
driver.reset()
# 卸载应用
driver.remove_app("com.tencent.wstt.gt")
# 终止应用
driver.terminate_app("com.kugou.android")
# 启动某个应用
driver.start_activity("com.kugou.android", ".app.splash.SplashActivity")

7. 截图操作

filename = r"F:\test.png"
driver.get_screenshot_as_file(filename)

8. 滚动元素操作

ele1 = driver.find_element_by_xpath("//*[@text='壁纸']")
ele2 = driver.find_element_by_xpath("//*[@text='WLAN']")
driver.scroll(ele1, ele2)

9. 拖拽元素操作

ele1 = driver.find_element_by_xpath("//*[@content-desc='天气']")
ele2 = driver.find_element_by_xpath("//*[@content-desc='安全中心']")
driver.drag_and_drop(ele1, ele2)

10. 打开通知栏操作

上一篇下一篇

猜你喜欢

热点阅读