文章目录
- 问题归整
-
- 1. [华为手机如何打开开发者权限](https://jingyan.baidu.com/article/49ad8bce96e1955835d8fa57.html)
- 2. 报错,大意:编译器没有找到对应的“name”方法
- 3. 报错:大意:由于目标计算机积极拒绝,无法连接。
- 4. 报错,大意“不能通过定义的元素属性定位到元素”?
- 5.报错,大意: selenium无法创建一个session(会话),已有一个会话在进行中。
- 6.使用uiautomatorviewer 查看android某些页面元素,报错大意:获取页面层级出错
- 7. 如何从Excel中获取脚本元素
- 8. 如何实现,定位不到某个元素的时候代码提示?
- 9. 如何实现识别app的tocat?
- 10. 如何实现滑动滑块?
- 11. 关于appium不能输入汉字的问题?
- 12. 脚本不能识别给定元素?
- 第一章 Apium初识
- 第二章 app元素的定位及操作
- 第三章 Unittest单元测试框架
- 第四章 app自动化实战
问题归整
https://www.cnblogs.com/chaoyangya/p/9774614.html
1. 华为手机如何打开开发者权限
2. 报错,大意:编译器没有找到对应的“name”方法
- appium1.5及以下版本支持name定位,v1.6+版本,统一都不支持 by_name元素定位方法!
3. 报错:大意:由于目标计算机积极拒绝,无法连接。
- 手机没有通过USB连接到电脑
- 手机连接到电脑上要关闭各种手机助手,不要安装手机管家,不要安装手机管家,不要安装手机管家。
- 没有启动appium
- USB连接后没有选择连接方式,要将连接方式 选择为“文件传输(NTC)”
- 代码中手机设备名称显示错误“adb devices”
- 可能是由于屏幕关闭的原因的造成的,所以要保持在case运行过程中,一定要让屏幕处于点亮状态
4. 报错,大意“不能通过定义的元素属性定位到元素”?
- 页面还没有跳转到对应界面,解决办法:添加time,sleep()
- 页面拥有该属性的元素不唯一,解决办法:改变定位元素方法
5.报错,大意: selenium无法创建一个session(会话),已有一个会话在进行中。
解决办法:
- 每执行一次脚本暂停一次appium连接,并清楚上次运行信息
- 关闭手机上上次已经运行过,但未关闭的应用进程
6.使用uiautomatorviewer 查看android某些页面元素,报错大意:获取页面层级出错
解决办法:
- 手机需要重启
- appium服务异常需要重新连接
- 可以尝试切换USB接口
- 最后可以把手机开发者选项的USB调试撤销权限,在重新获取
- 该app不支持该页面的截屏功能所以uiautomatorviewer捕捉不到
7. 如何从Excel中获取脚本元素
https://www.cnblogs.com/linyfeng/p/7123423.html
8. 如何实现,定位不到某个元素的时候代码提示?
- 解决办法:使用捕获异常语句进行捕获异常。当需要对全部元素进行捕获的时候,需要将所有的元素写在“try:”语句下方。常用的方法建议写成一个工具类,对某个元素进行查找
check=driver.find_element_by_id("****")
def Check_element(self,check)
try:
check
except:
print('获取元素失败')
9. 如何实现识别app的tocat?
10. 如何实现滑动滑块?
11. 关于appium不能输入汉字的问题?
- send_keys 本质是点击键盘, setValue本质是给控件属性value赋值。能不能输入汉字跟机器安装的输入法有关
-解决办法
desc = {
"deviceName": "S000960221055",
# "deviceName": "Z2X4C15C14015116",
"platofromVersiom": "6.0.1",
"platformName": "Android",
"appPackage": "com.ynh.gjia.tt",
"appActivity": "com.ynh.gjia.tt.WelcomeActivity",
"unicodeKeyboard" :"True",# 脚本中需要输入汉字的时候必须指明这种输入法
"resetKeyboard":"True",# 运行完成的时候回复默认之前输入法
}
12. 脚本不能识别给定元素?
- 原因:
-
- 给定的元素搜索信息标识不唯一
-
- app网络原因,没有添加思考时间,页面没有跳转就进行了识别
-
第一章 Apium初识
第一讲 Apium 概述
1 Appium简介
Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。Appium对IOS系统的支持得益于Dan Cuellar’s对于IOS自动化的研究。Appium也集成了Selendroid,来支持老android版本。
Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试。
2 特点
- 使用自动化来测试一个app,且不需要重新编译它
- 写自动化case(用例),不需要学习特定的语言。
- appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用。
“移动原生应用”是指那些用iOS或者 Android SDK 写的应用(Application简称app)。
“移动web应用”是指使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的 Chrome)。
“混合应用”是指原生代码封装网页视图——原生代码和 web 内容交互。比如,像 Phonegap,可以帮助开发者使用网页技术开发应用,然后用原生代码封装,这些就是混合应用。
- appium是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,增加了iOS和Android测试套件间代码的复用性。
第二讲 appiun与 Selenium
- appium与Selenium
- appium类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON格式selenium命令以及额外的移动设备控制相关的命令,如多点触控手势和屏幕朝向。
- appium服务端定义了官方协议的扩展,为appium用户提供了方便的接口来执行各种设备动作,例如在测试过程中安装/卸载App。这就是为什么我们需要appium特定的客户端,而不是通用的Selenium客户端.
- appium客户端类库只是增加了一些功能,而实际上这些功能就是简单的扩展了Selenium客户端,所以他们仍然可以用来运行通用的Selenium会话。
第三讲 appium工作原理
1. Android
在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调⽤用UiAutomator的命令,实现App的自动化测试。
UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。另外由于UiAutomator对H5的支持有限,appium引入了chromedriver以及safaridriver等来实现基于H5的自动化。
appium 在android端工作流
client端也就是我们 test script是我们的webdriver测试脚本。中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤用对应的框架响应操作。
appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调⽤用UiAutomator的命令来实现。
最后Bootstrap将执行的结果返回给appium server。
appium server再将结果返回给 appium client。
2. ios
在IOS端,appium同样使⽤WebDriver的一套协议。
与Android端测试框架不同的是,appium ios封装了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple的⾃自动化测试框架),然后在设备中注⼊入bootstrap.js进⾏行监听。
appium 在ios端工作流
client端 依然是 test script是我们的webdriver测试脚本。
中间是起的Appium的