上次教大家识别元素,现在教大家一些手机操作,以及一些扩展内容(示例代码:澎湃新闻)
获取信息
- 获取元素的文本信息
# 与selenium一致 text = driver.find_element(By.XPATH,'//x[@x="x"]').text print(text) 示例: text = driver.find_element(By.XPATH, '//android.widget.ImageView[@bounds="[1217,2628][1329,2730]"]') print(text)
- 获取屏幕分辨率
window = driver.get_window_size() print(window)
- 获取屏幕左上方坐标
location = driver.location print(location)
元素断言操作
对于原生应用来讲,元素断言可以通过获取displayed、enabled、selected属性值,然后通过条件语句if来进行判断
- 查看元素是否可见
is_displayed(self):此元素是否可见。隐藏元素和被控件挡住无法操作的元素(仅限H5和webview支持) 示例: # 查看元素是否可见 is_displayed() phone = driver.find_element(By.XPATH, '//android.widget.EditText[@text="输入11位手机号"]').is_displayed() print(phone)
- 查看元素是否可用
is_enabled(self):此元素是否可用。元素灰色和无法操作的元素(仅限H5和webview支持) # 查看元素是否可用 is_enabled enabled = driver.find_element(By.XPATH, '//android.widget.TextView[@resource-id="com.wondertek.paper:id/get_verification_code"]').is_enabled() print(enabled)
- 查看元素是否被选中
is_selected(self):此元素是否被选中。适用于单选框、复选框等类型的元素(仅限H5和webview支持) select = driver.find_element(By.XPATH, '//android.widget.CheckBox[@resource-id="com.wondertek.paper:id/checkbox_agreement"]').is_selected() print(select)
基本按键类操作
- 锁屏
# 锁屏3s ==》 交叉事件 driver.lock(3) print(driver.is_locked()) # 判断是否锁屏,是则返回false
- 解锁
# 解锁 driver.unlock() time.sleep(3) print(driver.is_locked())
- 组合使用
import time
from appium import webdriver
from appium.webdriver.webdriver import By
from appium.webdriver.connectiontype import ConnectionType
des = {
"platformName": "Android",
"platformVersion": "9",
"deviceName": "mac虚拟机",
"appPackage": "com.wondertek.paper",
"appActivity": "cn.thepaper.paper.ui.main.MainActivity",
"udid": "192.168.56.104:5555",
"noReset": "True"
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', des)
time.sleep(2)
# 锁屏3s ==》 交叉事件 driver.lock(3) print(driver.is_locked()) # 判断是否锁屏,是啧返回false # 解锁 driver.unlock() time.sleep(3) print(driver.is_locked()) - 横竖屏设置
# 横竖屏设置 driver.orientation = "LANDSCAPE" # 设置横屏 time.sleep(3) driver.orientation = "PORTRAIT" # 设置竖屏
- 打开通知栏
# 打开通知栏 driver.open_notifications() print(driver.orientation)
- 网络配置
network_connection:获取网络状态,返回整型数字0(None)、1(AirplaneMode)、2(Wifionly)、4(Dataonly)、6(Allnetworkon)
# 网络配置 print(driver.network_connection) # 查看当前网络状态 driver.set_network_connection(1) # 飞行模式 0 1 2 4 6 time.sleep(5)
# set_network_connection(self,connection_type):设置网络状态,使用数字或导入ConnectionType类进行传参设置 driver.set_network_connection(ConnectionType.ALL_NETWORK_ON) # 全开 - 截屏操作
driver.save_screenshot('pengpai.png') # 传入存放路径
- 按键操作
按键类操作API讲解:按键类操作用来模拟在手机设备上进行按键操作,常用API如下:
1、press_keycode(self,keycode,metastate=None,flags=None):模拟按键输入,其中:keycode:发送到设备的键值编码可以通过AndroidKeyCode进行查询对应数值metastate:将被发送的元信息flags:设置的按键事件标记
import time from appium import webdriver from appium.webdriver.webdriver import By from appium.webdriver.connectiontype import ConnectionType des = { "platformName": "Android", "platformVersion": "9", "deviceName": "mac虚拟机", "appPackage": "com.android.settings", "appActivity": "com.android.settings.Settings", "udid": "192.168.56.104:5555", "noReset": True } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', des) time.sleep(2) driver.find_element(By.XPATH, '//android.widget.TextView[@text="在设置中搜索"]').click() time.sleep(1) driver.press_keycode(29, 64, 59) # a 打开左边shift键的开关 按住左边shift键 == A 组合键 time.sleep(1) driver.press_keycode(29, 128, 60) # a 打开右边的shift键开关 按住右边shift键 == A time.sleep(1) driver.press_keycode(29, 1048576) # a 打开大小写开关 time.sleep(1) driver.press_keycode(29, 1) # 1 打开shift键
后续更新