了解移动自动化之路

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() 清空元素中输入内容

 















































以上是关于了解移动自动化之路的主要内容,如果未能解决你的问题,请参考以下文章

回归之路——移动自动化测试

移动端自动化测试强化学习之路“Flask”

取舍有道:看移动云数据库自动化运维平台建设之路(有彩蛋)

自动化测试之路 —— Appium使用教程

自动化测试之路 —— Appium元素定位

自动化测试之路 —— Appium输入及模拟手势