APP元素获取信息操作api
1.点击元素
发送数据到输入框
方法:send_keys(value) #value:需要发送到输入框内的文本
1.打开设置
2.点击搜索按钮
3.输入内容abc
# 点击搜索按钮
driver.find_element_by_id("com.android.settings:id/search").click()
# 定位到输入框并输入abc
driver.find_element_by_id("android:id/search_src_text").send_keys("abc")
重点:
大家可以将输入的abc 改成 输入中文,得到的结果:输入框无任何值输入且程序不会抱错
解决输入中文问题:
1.server 启动参数增加两个参数配置
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
2.再次运行会发现运行成功
# 点击搜索按钮
driver.find_element_by_id("com.android.settings:id/search").click()
# 定位到输入框并输入abc
driver.find_element_by_id("android:id/search_src_text").send_keys("哈哈")
清空输入框内容
方法:clear()
1.打开设置
2.点击搜索按钮
3.输入内容abc
4.删除已输入abc
# 点击搜索按钮
driver.find_element_by_id("com.android.settings:id/search").click()
# 定位到输入框并输入abc
input_text = driver.find_element_by_id("android:id/search_src_text")
# 输入abc
input_text.send_keys("abc")
time.sleep(1)
# 删除abc
input_text.clear()
获取元素的文本内容
方法:text()
1.进入设置
2.获取所有元素class属性为“android.widget.TextView”的文本内容
text_vlaue = driver.find_elements_by_class_name("android.widget.TextView")
for i in text_vlaue:
print(i.text)
获取元素的属性值
方法: get_attribute(value) # value:元素的属性
⚠️ value='name' 返回content-desc / text属性值
⚠️ value='text' 返回text的属性值
⚠️ value='className' 返回 class属性值,只有 API=>18 才能支持
⚠️ value='resourceId' 返回 resource-id属性值,只有 API=>18 才能支持
1.进入设置
2.获取搜索按钮的content-desc属性值
# 定位到搜索按钮
get_value = driver.find_element_by_id("com.android.settings:id/search")
print(get_value.get_attribute("name"))
获取元素在屏幕上的坐标
方法:location
1.进入设置页面
2.获取搜索按钮在屏幕的坐标位置
# 定位到搜索按钮
get_value = driver.find_element_by_id("com.android.settings:id/search").location
# 打印搜索按钮在屏幕上的坐标
print(get_value)
获取app包名和启动名
获取包名方法:current_package
获取启动名:current_activity
print(driver.current_package)
print(driver.current_activity)
adb查看当前软件运行的包名和activity
app元素事件操作api
swipe滑动事件
⚠️从一个坐标位置滑动到另一个坐标位置,只能是两个点之间的滑动
方法:swipe(start_x, start_y, end_x, end_y, duration=None)
参数:
1.start_x:起点X轴坐标
2.start_y:起点Y轴坐标
3.end_x: 终点X轴坐标
4.end_y,: 终点Y轴坐标
5.duration: 滑动这个操作一共持续的时间长度,单位:ms
代码实现:
#滑动没有持续时间
driver.swipe(188,659,148,248)
#滑动有持续时间
driver.swipe(188,659,148,248,5000)
scroll滑动事件
从一个元素滑动到另一个元素,直到页面自动停止
方法:scroll(origin_el, destination_el)
参数:
1.origin_el:滑动开始的元素
2.destination_el:滑动结束的元素
代码实现:
# 定位到存储菜单栏
el1 = driver.find_element_by_xpath("//*[contains(@text,'存储')]")
# 定位到WLAN菜单栏
el2 = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
# 执行滑动操作
driver.scroll(el1,el2)
drag拖拽事件
⚠️ 从一个元素滑动到另一个元素,第二个元素替代第一个元素原本屏幕上的位置
方法:drag_and_drop(origin_el, destination_el)
参数:
1.origin_el:滑动开始的元素
2.destination_el:滑动结束的元素
代码实现:
# 定位到存储菜单栏
el1 = driver.find_element_by_xpath("//*[contains(@text,'存储')]")
# 定位到WLAN菜单栏
el2 = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
# 执行滑动操作
driver.drag_and_drop(el1,el2)
应用置于后台事件
方法:background_app(seconds)
参数:seconds停留在后台的时间,单位秒
代码实现:
driver.background_app(5)
效果:
app置于后台5s后,再次展示当前页面