码迷,mamicode.com
首页 > 移动开发 > 详细

了解移动自动化之路(二)

时间:2020-11-04 18:27:07      阅读:21      评论:0      收藏:0      [点我收藏+]

标签:exception   员工   classname   strong   star   drive   获取   找不到   组类型   

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

 

了解移动自动化之路(二)

标签:exception   员工   classname   strong   star   drive   获取   找不到   组类型   

原文地址:https://www.cnblogs.com/imben/p/13922868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!