app元素信息操作

学习目标

  • 掌握常用的手机端元素信息的获取及基本的输入操作

1.前置代码

# 从appium库里面导入driver对象
from appium import webdriver
# server 启动参数
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
# 声明driver对象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

2. 发送数据到输入框

方法:send_keys(vaue) # value:需要发送到输入框内的文本

需求:
    打开设置 点击搜索按钮 输入内容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")

注: 如果插入中文,需要在desired_caps里面增加2个参数:

desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
# 点击搜索按钮
driver.find_element_by_id("com.android.settings:id/search").click()
# 定位到输入框并输入abc
driver.find_element_by_id("android:id/search_src_text").send_keys("传智播客")

3. 清空输入框内容

方法:clear()

需求:
    打开设置 点击搜索按钮  输入内容abc 删除已输入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()

4. 获取元素的文本内容

方法: text

需求: 
    进入设置,获取所有元素class属性为"android.widget.TextView"的文本内容

代码:
text_vlaue = driver.find_elements_by_class_name("android.widget.TextView")
for i in text_vlaue:
        print(i.text)

5. 获取元素的属性值

方法: get_attribute(value) # value:元素的属性
1. value='name' 返回content-desc / text属性值
2. value='text' 返回text的属性值
3. value='className' 返回 class属性值,只有 API=>18 才能支持
4. value='resourceId' 返回 resource-id属性值,只有 API=>18 才能支持

需求:
    进入设置 获取wlan属性

data = driver.find_element_by_id("com.android.settings:id/title")
print(data.get_attribute(‘resourceId’))

6. 获取元素在屏幕上的坐标

方法: location

需求:
    进入设置,获取搜索按钮在屏幕上的坐标位置

#定位搜索按钮
get_value = driver.find_element_by_id("com.android.settings:id/search")
#输出按钮坐标
print(get_value.location)

7. 获取app包名和启动名

获取包名方法: current_package
获取启动名: current_activity

需求:
    启动设置,获取包名和启动名

print(driver.current_package)
print(driver.current_activity)