这篇“Python怎么利用appium实现模拟手机滑动操控的操作”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python怎么利用appium实现模拟手机滑动操控的操作”文章吧。
OK,接下来我们就看一些,滑动操控 的脚本究竟要怎么写。
在模拟 “滑动操控” 的时候,使用的方法就是 swipe() ,该方法的参数说明如下:
start_x:起始横坐标
start_y:起始纵坐标
end_x:结束时横坐标
end_y:结束时纵坐标
duration:滑动持续时间,单位毫秒,默认None(一般设置500-1000毫秒比较合适)
ps:如果不设置 "duration" ,即为 0秒 ,无法看到滑动效果。
duration 参数需要注意的是:在移动设备上滑动时间的快慢所形成的效果是不一样的。以今日头条APP首页上滑为例,同样的滑动距离,滑动较快则出现类似翻页的效果,而滑动较慢则是同一则新闻从起始位置滑动到结束位置。
手机屏幕的坐标:以手机屏幕最左上角的坐标点为坐标中心(0, 0),向右话滑动则纵坐标不变,横坐标变大;向下滑动则横坐标不变,纵坐标变大。
在实际工作场景中,不同测试机的屏幕尺寸存在着很大的差异性。所以正常情况下,我们不会选择使用固定的的坐标来滑动屏幕。
一般操作是,先获取测试机屏幕尺寸,再通过获取的手机屏幕尺寸来确定滑动的起始、结束坐标;这样,即使在我们更换了测试手机后也不需要重新更改坐标。使用webdriver提供的get_window_size()方法可以获取屏幕尺寸(即屏幕右下角的坐标),方法如下:
# 获取屏幕宽度 width = driver.get_window_size()['width'] # 获取屏幕高度 height = driver.get_window_size()['heigth']
滑动屏幕操作代码如下:()
# 屏幕从下向上滑动 driver.swipe(width*0.5, height*0.9, width*0.5, height*0.1, 1000) sleep(1) # 屏幕从上向下滑动 driver.swipe(width*0.5, height*0.1, width*0.5, height*0.9, 1000) sleep(1) # 屏幕从左向右滑动 driver.swipe(width*0.1, height*0.5, width*0.9, height*0.5, 1000) sleep(1) # 屏幕从右向左滑动 driver.swipe(width*0.9, height*0.5, width*0.1, height*0.5, 1000) sleep(1)
代码示例如下:
# coding=utf-8 from time import sleep from appium import webdriver # appium 的特色就是将安卓、IOS的底层封装成了 webdriver 类型的语句 from appium.webdriver.common.appiumby import By # 启动参数 desired_caps = {} # 定义 desired_caps 变量,用以赋值很多的启动信息 desired_caps['platformName'] = 'Android' # 设备名称、系统为 "Android" desired_caps['platformVersion'] = '7.1.2' # 这里是在夜神模拟器的设置中心查看安卓版本是 "7.1.2" ,后续会告诉大家如何切换版本 desired_caps['deviceName'] = '127.0.0.1:62001' # 这里如果是真机的话填写的是设备名称;因为我们用的是模拟器,填写的是IP端口号 # desired_caps['appPackage'] = 'com.baidu.searchbox' # APP 的包名;这里我们使用的是通讯录 # desired_caps['appActivity'] = 'com.baidu.searchbox.SplashActivity' # 启动的界面的名字(也或者叫启动名,默认是 "." 开头的) # desired_caps['automationName']='UiAutomator1' # 声明手机驱动 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 注册到这个节点上,传入 "desired_caps"。这个节点就是 "appium" 开启的端口节点 sleep(1) # 获取屏幕宽度 width = driver.get_window_size()['width'] # 获取屏幕高度 height = driver.get_window_size()['height'] # 利用 "swipe" 实现滑动, 屏幕从下向上滑动 driver.swipe(width*0.5, height*0.9, width*0.5, height*0.1, 1000) sleep(1) # 利用 "swipe" 实现滑动, 屏幕从上向下滑动 driver.swipe(width*0.5, height*0.1, width*0.5, height*0.9, 1000) sleep(1) # 利用 "swipe" 实现滑动, 屏幕从左向右滑动 driver.swipe(width*0.1, height*0.5, width*0.9, height*0.5, 1000) sleep(1) # 利用 "swipe" 实现滑动, 屏幕从右向左滑动 driver.swipe(width*0.9, height*0.5, width*0.1, height*0.5, 1000) sleep(1) driver.terminate_app('com.baidu.searchbox') # driver.quit()
上文中的脚本虽然也能够实现我们针对 App 的 “滑动操控” 的操作,但是代码的整洁度上来看不是那么的美观。既然如此,我们是否能够将其封装起来,变成一个公共的方法,当然是可以的了,继续往下看。
代码示例如下:
# coding=utf-8 from time import sleep from appium import webdriver # appium 的特色就是将安卓、IOS的底层封装成了 webdriver 类型的语句 def getSize(driver): """获取页面大小""" x = driver.get_window_size()['width'] y = driver.get_window_size()['height'] return(x, y) def swipeRight(driver): """向右滑动 - [x轴变动,y轴不变]""" l = getSize(driver) x1 = int(l[0]*0.8) x2 = int(l[0]*0.2) y = int(l[1]*0.5) driver.swipe(x1, y, x2, y, 1000) def swipeLeft(driver): """向左滑动 - [x轴变动,y轴不变]""" l = getSize(driver) x1 = int(l[0]*0.9) x2 = int(l[0]*0.1) y = int(l[1]*0.5) driver.swipe(x2, y, x1, y, 1000) def swipeDown(driver): """向下滑动 - [x轴不变,y轴变动]""" l = getSize(driver) y1 = int(l[1]*0.9) y2 = int(l[1]*0.1) x = int(l[0]*0.5) driver.swipe(x, y1, x, y2, 1000) def swipeUp(driver): """向上滑动 - [x轴不变,y轴变动]""" l = getSize(driver) y1 = int(l[1]*0.8) y2 = int(l[1]*0.2) x = int(l[0]*0.5) driver.swipe(x, y2, x, y1, 1000) def swipeDemo(): # 启动参数 desired_caps = {} # 定义 desired_caps 变量,用以赋值很多的启动信息 desired_caps['platformName'] = 'Android' # 设备名称、系统为 "Android" desired_caps['platformVersion'] = '7.1.2' # 这里是在夜神模拟器的设置中心查看安卓版本是 "7.1.2" ,后续会告诉大家如何切换版本 desired_caps['deviceName'] = '127.0.0.1:62001' # 这里如果是真机的话填写的是设备名称;因为我们用的是模拟器,填写的是IP端口号 # desired_caps['appPackage'] = 'com.baidu.searchbox' # APP 的包名;这里我们使用的是通讯录 # desired_caps['appActivity'] = 'com.baidu.searchbox.SplashActivity' # 启动的界面的名字(也或者叫启动名,默认是 "." 开头的) # desired_caps['automationName']='UiAutomator1' # 声明手机驱动 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 注册到这个节点上,传入 "desired_caps"。这个节点就是 "appium" 开启的端口节点 sleep(1) # 利用 "swipe" 实现滑动, 屏幕从下向上滑动 swipeDown(driver) sleep(2) # 利用 "swipe" 实现滑动, 屏幕从上向下滑动 swipeUp(driver) sleep(2) # 利用 "swipe" 实现滑动, 屏幕从左向右滑动 swipeLeft(driver) sleep(2) # 利用 "swipe" 实现滑动, 屏幕从右向左滑动 swipeRight(driver) sleep(2) driver.terminate_app('com.baidu.searchbox') # driver.quit() if __name__ == '__main__': swipeDemo()
以上就是关于“Python怎么利用appium实现模拟手机滑动操控的操作”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。