设备基本操作

1、lock(self,seconds):锁屏操作,seconds设置锁屏时长



# 锁屏操作
driver.lock(3) # 锁屏时长3s ==> 交叉事件:如果测试一个视频直播,锁屏后再打开是否还能继续直播
time.sleep(2)
print(driver.is_locked()) # is_locked()判断是否为锁屏状态 返回布尔值


2、unlock(self):解锁操作



# 解锁操作
driver.unlock()
print(driver.is_locked())


3、is_locked(self):判断是否锁屏,锁屏状态返回True



# 锁屏操作
driver.lock(3)
time.sleep(2)
# 判断是否锁屏 锁屏状态返回True
print(driver.is_locked()) # is_locked()判断是否为锁屏状态 返回布尔值


4、open_notifications(self):打开通知栏



#打开通知栏操作
time.sleep(2)
driver.open_notifications()


5、driver.orientation='LANDSCAPE':切换横屏操作,PORTRAIT:切换竖屏操作,也可以通过driver.orientation获取当前屏幕状态



# 切换横竖屏操作
print(driver.orientation) # 获取当前屏幕的横竖屏状态
time.sleep(2)
driver.orientation = 'LANDSCAPE' # 设置横屏
time.sleep(2)
driver.orientation = 'PORTRAIT' # 设置竖屏


6、get_window_size(self,windowHandle='current'):默认获取当前屏幕的分辨率,返回字典{'width':,'height':}



# 默认获取当前屏幕的分辨率,返回字典{'width':,'height':}
print(driver.get_window_size())


7、network_connection:获取网络状态,返回整型数字

0 (No connection) 无状态

1(Airplane Mode) 飞行模式

2(Wifi only) 仅开启wifi模式

4(Data only) 仅开启数据流量模式

6(All network on) 全部开启(包括wifi 和数据流量模式)



print(driver.network_connection)  # 获取网络状态


8、set_network_connection(self,connection_type):设置网络状态,使用数字或导入ConnectionType类进行传参设置



# 设置网络状态
# 方式一:使用数字传参设置 0、1、2、4、6
driver.set_network_connection(1)
time.sleep(5)
# 方式二:导入ConnectionType类进行传参设置
from appium.webdriver.connectiontype import ConnectionType
driver.set_network_connection(ConnectionType.ALL_NETWORK_ON)


9、save_screenshot(self,filename):截屏操作,filename为保存的文件路径,图片格式设置为png格式



# 截图操作
time.sleep(2)
driver.save_screenshot('C:/Users/Jeff/Desktop/123.png')



10、get_device_time(self,format=None):获取设备当前时间,format为日期时间格式设置,默认为'YYYY-MM-DDTHH:mm:ssZ'



# 获取设备当前时间,默认格式为'YYYY-MM-DDTHH:mm:ssZ'
print(driver.get_device_time())


按键类操作

 按键类操作用来模拟在手机设备上进行按键操作

 1、press_keycode(self,keycode,metastate=None,flags=None):模拟按键输入,其中:

  keycode:发送到设备的键值编码可以通过AndroidKeyCode进行查询对应数值

  metastate:将被发送的元信息

  flags:设置的按键事件标记

举例:通过键盘正常输入大写字母的操作方式有四种:

1.按下左侧shift键+字母  driver.press_keycode(29,64,59)

2.按下右侧shift键+字母  driver.press_keycode(29,128,60)

3.按下caps_lock大小写锁定键输入字符  driver.press_keycode(29,1048576)

4.按下shift键+字母  driver.press_keycode(29,1)

注:按键详细操作参考:转载至 作者:oscarforever 



import time
from appium import webdriver # 导入appium 驱动包
from appium.webdriver.webdriver import By # 导入appium 定位的方法包
des = {
'platformName':'Android',
'platformVersion':'6.0.1', # 填写android虚拟机/真机的系统版本号
'deviceName':'MuMu', # 填写安卓虚拟机/真机的设备名称
'appPackage':'com.android.settings', # 填写被测app包名
'appActivity':'.Settings', # 填写被测app的入口
'udid':'127.0.0.1:7555', # 填写通过命令行 adb devices 查看到的udid
'noReset':True, # 是否重置APP
'unicodeKeyboard':True, # 是否支持中文输入
'resetKeyboard':True, # 是否支持重置键盘
'newCommandTimeout':30 # 30秒没发送新命令就断开连接
}

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',des)
time.sleep(2)
driver.find_element(By.XPATH,'//android.widget.TextView[@content-desc="搜索设置"]').click()
time.sleep(2)
driver.find_element(By.XPATH,'//android.widget.EditText[@resource-id="android:id/search_src_text"]').click()
time.sleep(1)
driver.press_keycode(29,64,59) # 29是字母a,64是打开左边shift键开关 59是按左边shift键 ==》A
time.sleep(1)
driver.press_keycode(29,128,60) # 29是字母a,128是打开右边shift键开关 60是按右边shift键 ==》A
time.sleep(1)
driver.press_keycode(29,1048576) #29是字母a META_CAPS_LOCK_ON 大写键开关打开 ==》A
time.sleep(1)
driver.press_keycode(29,1) # 29是字母a 1是shift键打开 ==》A


oscarforever