目录
- desirecapability介绍
- appium元素定位
- 隐式等待
测试用例的重要部分
- 导入依赖:
from appium import webdriver
- capabilities设置
- 初始化driver:
- python webdriver.remote
- 隐式等待, 增强用例的稳定性
- 元素定位与操作find+action
- 断言assert
Capability设置
- app apk地址
- appPackage包名
- appActivity Activity名字
- automationName:默认使用uiautomator2(andorid默认使用uiautomator2, ios默认使用XCUITest)
- noReset fullReset:是否在测试前后重置相关环境(例如首次打开弹框,或者是登录信息)
- 演示雪球的首次启动弹框功能,noreset=True, noreset=false情况
- unicodeKeyBoard resetKeyBoard:是否需要输入非英文之外的语言并在测试完成后重置输入法。
- 举例输入中文,alibaba,阿里巴巴
- newCommandTimeout:应用超时时间,默认为60秒
- udid:设备唯一标识,多台设备的时候使用
- orientation:横竖屏展示
- autoView:自动识别webview
- 官方文档: https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
- dontStopAppOnReset:首次启动的时候,不停止 app(可以调试或者运行的时候提升运行速度)
- skipDeviceInitialization:跳过安装,权限设置等操作(可以调试或者运行的时候提升运行速度)
appium常用定位方式
- 常用的两种定位方式id, accessibiliity_id
driver.find_element_by_id(resource-id)
-
driver.find_element by accessibility _id(content-desc)
,accessibility _id的属性值为content-desc的属性值
三种等待方式
- 强制等待:
- sleep不推荐
- 隐式等待(全局性)
- 设置一个超时时间,服务端appium会在给定的时间内,不停的查找,默认值是0。
- 用法: `driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
- 在服务端等待
- 显式等待(等待某个元素)
Element = WebDriverWait(driver,10,0.5).until(expected_conditions.visibility_of_element_located(MobileBy.ID, "com.android.settings:id/title")))
- 在客户端等待
实例
from appium import webdriver
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '6.0'
desired_caps['deviceName'] = '127.0.0.1:7555'
desired_caps['appPackage'] = 'com.xueqiu.android '
desired_caps['appActivity'] = 'com.xueqiu.android.common.MainActivity'
desired_caps['noReset'] = 'true'
desired_caps['dontStopAppOnReset'] = "true"
desired_caps['skipDeviceInitialization'] = "true"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
# 隐式等待
driver.implicitly_wait(5)
# 点击搜索框
driver.find_element_by_id("com.xueqiu.android:id/home_search").click()
# 输入搜索内容
driver.find_element_by_id("com.xueqiu.android:id/search_input_text").send_keys("alibaba")
# 返回上一个页面
driver.back()
driver.quit()
下一节:App控件定位,包括id、aid、XPath定位方法,DOM结构解读,UIAutomatorViewer定位工具。