在这里我会罗列一些常用的方法:
1. 判断某一个元素在不在当前的页面
if 'selement' in driver.page_source:
2. 模拟滚动,获取设备窗口大小(以及其它)
driver = webdriver.Remote(server, desired_caps)
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
driver.swipe(x * 0.5, y * 0.75, x * 0.5, y * 0.25, 500) # 上滑
driver.swipe(x * 0.5, y * 0.25, x * 0.5, y * 0.75, 500) # 下滑
driver.swipe(x * 0.75, y * 0.5, x * 0.25, y * 0.5, 500) # 左滑
driver.swipe(x * 0.25, y * 0.5, x * 0.75, y * 0.5, 500) # 右滑
#锁定屏幕时间秒
driver.lock(5)
#将APP放置后台 参数时间秒
driver.background_app(5)
#收起键盘
driver.hide_keyboard()
#启动Activity
driver.start_activity('包名', 'activity名')
#打开通知栏
driver.open_notifications()
#检查应用是否已经安装 参数包名
driver.is_app_installed('xxxxxx')
#安装应用 参数 路径
driver.install_app('path/my.apk')
#删除应用
driver.remove_app('xxxxxx')
#摇晃(Shake)
driver.shake()
#关闭应用
driver.close_app()
#重置(等于卸载后重装)
driver.reset()
#获取应用的字符串
driver.app_strings
#按键事件
driver.keyevent(具体的按键)
#获取当前Activity
driver.current_activity
#长按某一个按钮
TouchAction(driver).long_press(具体的按键).wait(1500).perform()
Appium Python API 其他博主整理的,还不错!
3. 根据uiautomator定位
1. uiautomator text模糊定位
模糊定位故名思义,通过text的部分信息就能够进行定位,我们直接看代码:
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().textContains("请输入手")')
ele.send_keys("123")
在上面的代码中我们只是将.text()的方法变成了.textContains(),在方法中传入模糊的数据就好。看到这里是否有人思考过一个问题,既然有类似的模糊寻找,那么有没有像正则表达式一样的查找呢?答案是肯定的,看我们下面的方法。
2. textMatches 正则匹配查找
textMatches故名思义就是通过正则的来进行查找定位,他也是通过text的属性来进行正则匹配,我们直接看代码:
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().textMatches("^请输入手.*")')
ele.send_keys("123")
上面匹配的一些信息可能一些刚做测试的小伙伴不是很了解,这个不要紧,下来可以搜索一下正则表达式教程,稍微了解一下就可以。
3. uiautomator resourceID定位
resourceId定位和appium封装好的id定位是一样的,只是这里将写法变成了uiautomator的写法而已,看下面代码:
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("cn.com.open.mooc:id/et_phone_edit")')
ele.send_keys('234')
通过上面的代码和之前的代码对比大家可能发现其实他们前面都是一样的,只是在定位的时候发生了一些变化,text变换成了resourceID即可,也就是页面对象属性的信息进行变更了,其他方法都是一样。下面其他方法我就不浪费篇幅,只给大家做一个简单的案例展示。
4. resourceIDMatches 定位
通过id进行正则匹配定位
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().resourceIdMatches(".+et_phone_edit")')
ele.send_keys('234')
5.uiautomator className定位
通过调用android uiautomator使用className进行定位
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")')
ele.send_keys('234')
6. uiautomator classNameMatches定位
通过className正则匹配进行定位
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().classNameMatches (".*EditText")')
ele.send_keys('234')