了解移动自动化之路
Posted imben
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解移动自动化之路相关的知识,希望对你有一定的参考价值。
一、webdriver常用API
01 获取类
- 包名: current_package
- 启动:current_activity
- 上下文环境:contexts 返回列表
driver.属性名
02 安装卸载
- 安装: install_app(安装包路径)
- 卸载: remove_app(安包名)
driver.具体方法名()
03 关闭和判断
close_app() : 将当前正在展示的APP界面关闭了
quit(): 将当前次会话切断,不存 driver 了
is_app_installed(包名) :返回布尔值,True表示安装了
04 常用API
- 获取屏幕尺寸:get_window_size() # 返回字典类型
- 获取屏幕截图: get_screenshot_as_file() # 设置图片存放路径
- 启动指定APP :start_activity(包名,启动名) # 前提手机上已安装当前APP
- 后台运行 APP : background_app( 秒数 )
- 键盘事件: keyevent( 对应键的keycode )
driver.具体方法名()
二、Uiautomatroview使用
01 作用
相当于 web 端的浏览器开发人员工具(调试工具),专门用于定位APP界面中的元素信息( text class id )
02 常见功能
- 截取正在显示的屏幕信息
- 保存当前屏幕信息为文件( 一张图 + 一个uix文件 )
- 打开之前已经保存好的文件,直接定位
03 常见问题
- 在直接使用打开功能时,由于电脑分辨率过高,可能出现无法打开目标文件的问题
- 在自动化过程中 先运行了自动化测试脚本,然后继续截图时会报错
- 使用打开功能时,需要注意图片和uix文件应当是一一对应
三、获取单个元素
01 作用
通过具体的函数定位目元素,依据业务添加动作
02 具体的方法
- find_element_by_id(“id值”)
- find_element_by_class_name(“类名”)
- find_element_by_xpath(“路径”)
- find_elements_by_id()
- find_elements_by_class_name()
- find_elemenets_by_xpath()
四、获取元素细节
1. 定位单个元素时传入了不存在的属性值: 语法异常
2. 定位单个元素时传入了存在多次的属性值:返回第一个元素,返回元素对象
3. 定位多个元素时传入存在一次的属性值: 返回元素,且放置于列表
4. 定位多个元素时传入不存在的属性值: 返回空列表
5. 目标元素存在,但是可视区内看不到:语法异常
6. 使用xpath时 可以选择精确和模糊二种
五、get_element分步实现
1. 将 find_element 封装在自定义的 get_element() 当中
def get_element():
# 在python 中任意函数都会有返回,如果没有return 指定,默认返回None
return driver.find_element(By.ID, "com.android.settings:id/search")
2. 将自定义的 get_element() 通用
def get_element(feature):
调用当前方法时返回一个元素对象
:param feature: 这是一个元组类型,表示目标元素的信息
:return: 元素对象 object
return driver.find_element(*feature)
3. 在通用的 get_element() 当中添加显示等待
def get_element(feature):
wait = WebDriverWait(driver, 5, 1)
return wait.until(lambda x: x.find_element(*feature))
4. 添加异常捕获,统一返回值,如果找不到则返回None
def get_element(feature):
wait = WebDriverWait(driver, 5, 1)
try:
obj = wait.until(lambda x: x.find_element(*feature))
except Exception:
# 代码走到这里,说明没有找到元素,统一返回None
return None
else:
# 代码走到这里就说明找到元素了,直接返回元素
return obj
六、常见的属性和方法
01 属性
- obj.text :这是一个可以直接使用的属性名,返回的 text 属性值
- obj.get_attribute(): 接收具体的属性名,返回对应的属性值
- enabled : 返回字符串形式的 true 或 false
- resourceId: 返回元素ID值
- className: 返回类名
- name: 可以理解为和 text 一样
02 方法
- click() 元素点击操作
- send_keys() 元素输入操作
- clear() 清空元素中输入内容
以上是关于了解移动自动化之路的主要内容,如果未能解决你的问题,请参考以下文章