APP元素信息操作API
本节讲介绍手机端元素信息的获取以及基本的输入操作。
- 前置代码
from appium import webdriver # server 启动参数 desired_caps = {} # 设备信息 desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '5.1' desired_caps['deviceName'] = '192.168.56.101:5555' # app的信息 desired_caps['appPackage'] = 'com.android.settings' desired_caps['appActivity'] = '.Settings' # 声明我们的driver对象 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
点击元素
发送数据到输入框
方法:send_keys(vaue) # 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) 执行结果: 设置 无线和网络 WLAN 更多 设备 显示 提示音和通知 存储
获取元素的属性值
方法: 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") # 打印搜索按钮在屏幕上的坐标 print(get_value.location) 执行结果: {'y': 44, 'x': 408}
获取app包名和启动名
获取包名方法:current_package
获取启动名:current_activity
业务场景: 1.启动设置 2.获取包名和启动名
代码实现: print(driver.current_package) print(driver.current_activity) 执行结果: com.tencent.news .activity.SplashActivity