Appium

一、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定位不到

Appium

解决方法:用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.:定位输入框,输入文本有时弹键盘,导致定位不到登录

解决办法:暂无

 

三、报告展示

Appium

四、思考

1.框架的结构做成哪样的比较好?

Appium

上一篇:device-mapper 块级重删(dm dedup) <3>代码结构(3)


下一篇:Android开发 - 掌握ConstraintLayout(三)编辑器