一、Appium介绍
https://testerhome.com/topics/11318
整个UI自动化实现:定位元素》利用appium提供的API进行流程操作》利用unittest进行断言》利用TestHTMLReport生成测试报告
二、Appium遇到的坑
全的元素定位不到
解决办法:封装swipe方法,滑动屏幕直到找到某元素
def SwipeUntilElementAppear(self,i,ele):
# 获取屏幕宽高:
width = self.driver.get_window_size()[‘width‘]
height = self.driver.get_window_size()[‘height‘]
j=0
while j < i:
try:
self.driver.find_element_by_xpath(ele).click()
break
except Exception as e:
self.driver.swipe(width / 2, height * 0.5, width / 2, height * 0.1) # 滑动屏幕
time.sleep(2)
j = j+1
6.坑:className不允许使用复合类名做参数
解决办法:
真实环境中元素往往使用复合类名(即多个class用空格分隔),使用className定位时要注意了,className的参数只能是一个class。
例如,打开http://hao.360.cn/,我们要使用className定位这个元素
<a class="tab-item news" data-page="http://sh.qihoo.com/daohang/index1.html"; hidefocus="false"href="./brother.html#!news">新闻头条</a>
1)执行driver.findElements(by.className("news")),成功定位到元素
2)执行driver.findElements(by.className("tab-item news")),定位失败,报错信息:Compound class names not permitted,意思是不允许使用复合类名称
7.坑:以下html用classname定位不到
解决方法:用xpath定位
8.坑:用class定位多个元素时,提示权限问题
解决办法:改用css定位可解决
9.坑:接入HtmlTestRunner,直接点右键运行结束后没有报异常,但就是没有生成测试报告
解决办法:因为点右键运行或点右上角的运行按钮或ctrl+shift+F10都运行的是编译器自带的unittest in xxx.py,所以需要按Alt+shift+F10,选择xxx来运行,这样就是从自己的main入口开始执行
10.坑:appium server和uiautomatorview不能同时打开
11.坑:导入信用卡很慢
解决办法:暂无
12.坑:定位不准,导信用卡 self.driver.find_element_by_xpath("//android.widget.EditText[@text=‘用户名‘]").send_keys("wallisqq") 有时定位到密码框
解决办法:暂无
13.坑:定位输入框,输入文本有时弹键盘,导致定位不到登录
解决办法:暂无
三、报告展示
四、思考
1.框架的结构做成哪样的比较好?