专业做公司logo的网站,桂林两江四湖地图,4399电脑版网页在线玩,黄岛网站建设哪家权威文章目录一、获取分辨率1.1 方法名1.2 获取分辨率-示例二、手机截图2.1 方法2.2 手机截图-示例三、获取和设置手机网络3.1 方法3.2 示例3.2.1 获取手机网络-示例3.2.2 设置手机网络-示例3.2.3 判断当前网络-示例四、发送键到设备4.1 方法4.2 发送键到设备-示例五、操作通知栏5.…文章目录一、获取分辨率1.1 方法名1.2 获取分辨率-示例二、手机截图2.1 方法2.2 手机截图-示例三、获取和设置手机网络3.1 方法3.2 示例3.2.1 获取手机网络-示例3.2.2 设置手机网络-示例3.2.3 判断当前网络-示例四、发送键到设备4.1 方法4.2 发送键到设备-示例五、操作通知栏5.1 方法5.2 操作通知栏-示例一、获取分辨率通过获取手机分辨率来动态计算滑动的起止坐标点1.1 方法名# 获取手机分辨率driver.get_window_size()# 返回值-字典-里面有两个key。分别是 width 和 height-宽和高的值是int类型的1.2 获取分辨率-示例需求输出当前设备的屏幕分辨率。# 1、导包importtimefromappiumimportwebdriverfromappium.webdriver.common.touch_actionimportTouchAction# 2、配置启动参数desired_caps{}# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]1# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity]com.android.settings.Settingsdesired_caps[unicodeKeyboard]True# 使用自带输入法输入中文时填Truedesired_caps[resetKeyboard]True# 执行完程序恢复原来输入法# 3、创建APP驱动对象driverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 隐式等待driver.implicitly_wait(30)# 4、业务操作# 获取当前设备的分辨率print(driver.get_window_size())# {width: 1080, height: 1920}print(driver.get_window_size()[width])# 1080print(type(driver.get_window_size()[width]))# class inttime.sleep(5)# 5、关闭APPdriver.quit()二、手机截图有些自动化的操作可能没有反应但并不报错。此时我们就可以将操作过后的关键情况截图留存。后期也可以根据图片发现问题。2.1 方法# 参数filename指定路径下指定格式的图片driver.get_screenshot_as_file(filename)# 如果直接写了文件名则会默认保存在项目目录下2.2 手机截图-示例打开设置页面截图当前页面保存到当前目录命名为screen.pngimporttimefromappiumimportwebdriver desired_capsdict()# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]192.168.56.101:5555# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity].Settings# 获取driverdriverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 截图driver.get_screenshot_as_file(screen.png)# 保存在项目目录下# driver.get_screenshot_as_file(/Users/ggk/Desktop/screen.png) # 保存在桌面下time.sleep(5)driver.quit()三、获取和设置手机网络视频应用在使用流量看视频的时候大部分都会提示用户正在是否继续播放。作为测试人员我们可能需要用自动化的形式来判断是否有对应的提示。即用流量的时候应该有提示不用流量的时候应该没有提示。3.1 方法# 获取手机网络driver.network_connection# 设置手机网络# 参数 connectionType网络类型driver.set_network_connection(connectionType)3.2 示例3.2.1 获取手机网络-示例获取当前网络类型并打印importtimefromappiumimportwebdriver desired_capsdict()# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]192.168.56.101:5555# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity].Settings# 获取driverdriverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# # 获取当前网络print(driver.network_connection)# 6time.sleep(5)driver.quit()结果对照defset_network_connection(self,connection_type:int)-int:Sets the network connectiontype.Android only.Possible values:-----------------------------------------------|Value(Alias)|Data|Wifi|Airplane Mode||0(None)|0|0|0|-----------------------------------------------|1(Airplane Mode)|0|0|1|-----------------------------------------------|2(Wifi only)|0|1|0|-----------------------------------------------|4(Data only)|1|0|0|-----------------------------------------------|6(All network on)|1|1|0|-----------------------------------------------classConnectionType:NO_CONNECTION0AIRPLANE_MODE1WIFI_ONLY2DATA_ONLY4ALL_NETWORK_ON63.2.2 设置手机网络-示例设置当前设备为飞行模式importtimefromappiumimportwebdriver desired_capsdict()# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]192.168.56.101:5555# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity].Settings# 获取driverdriverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 获取当前网络print(driver.network_connection)# 设置当前网络driver.set_network_connection(1)time.sleep(5)driver.quit()3.2.3 判断当前网络-示例importtimefromappiumimportwebdriver# 网络的类型建议使用系统提供的类型fromappium.webdriver.connectiontypeimportConnectionType desired_capsdict()# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]192.168.56.101:5555# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity].Settings# 获取driverdriverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps) # 不推荐要使用这种注释写好 if driver.network_connection 4: # 4data only print(1) else: print(0) # 推荐的ifdriver.network_connectionConnectionType.DATA_ONLY:print(1)else:print(0)time.sleep(5)driver.quit()四、发送键到设备模拟按 “返回键” “home键” 等操作比如很多应用有按两次返回键退出应用的功能如果这个功能需要我们做自动化那么一定会用到这个方法。4.1 方法# 发送键到设备driver.press_keycode(keycode,metastateNone)# keycode发送给设备的关键代码# metastate关于被发送的关键代码的元信息一般为默认值参考的keycodehttps://blog.csdn.net/feizhixuan46789/article/details/168014294.2 发送键到设备-示例需求点击三次音量加再点击返回再点击两次音量减。importtimefromappiumimportwebdriver desired_capsdict()# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]192.168.56.101:5555# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity].Settings# 获取driverdriverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 发送键到设备# 需求三次音量 返回 两次音量-driver.press_keycode(24)# 音量time.sleep(2)driver.press_keycode(24)# 音量time.sleep(2)driver.press_keycode(24)# 音量time.sleep(2)driver.press_keycode(4)# 返回键time.sleep(2)driver.press_keycode(25)# 音量-time.sleep(2)driver.press_keycode(25)# 音量-time.sleep(2)time.sleep(5)driver.quit()五、操作通知栏测试即时通信类软件的时候如果 A 给 B 发送一条消息B 的通知栏肯定会显示对应的消息。我们想通过通知栏来判断 B 是否收到消息一定要先操作手机的通知栏。注意appium官方并没有为我们提供关闭通知的api那么现实生活中怎么关闭就怎样操作就行。比如手指从下往上滑动或者按返回键5.1 方法# 打开手机通知栏driver.open_notifications()# 关闭手机通知栏driver.press_keycode(4)# 返回键5.2 操作通知栏-示例需求打开通知栏两秒后关闭通知栏。# 1、导包importtimefromappiumimportwebdriverfromappium.webdriver.common.touch_actionimportTouchAction# 2、配置启动参数desired_caps{}# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]1# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity]com.android.settings.Settingsdesired_caps[unicodeKeyboard]True# 使用自带输入法输入中文时填Truedesired_caps[resetKeyboard]True# 执行完程序恢复原来输入法# 3、创建APP驱动对象driverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 隐式等待driver.implicitly_wait(30)# 4、业务操作# 打开通知栏driver.open_notifications()time.sleep(3)# 关闭通知栏driver.press_keycode(4)time.sleep(5)# 5、关闭APPdriver.quit()