Python利用appium实现模拟手机滑动操控的操作

41 篇文章 5 订阅
17 篇文章 0 订阅

一、滑动操控

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)
Python学习资源分享群:748989764
# 获取屏幕宽度
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()

四、将 “滑动操控” 改为公共的方法

代码示例如下:

# 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)
    Python学习资源分享群:748989764

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学习资源分享群:748989764

其实滑动在实际操作中应用的场景还是不少的,就比如要定位的元素在页面下方必须要通过滑动才能往下滑将其展示出来;再比如解锁密码、或者滑动九宫格之类的场景… 类似的滑动场景,大家可以在真实的场景中逐步的去体验。

到此,一个很简单的基于 “百度App” 实现的 demo 就到此结束了。但是该 demo 仅仅是基于实现,没有像之前的 WEB 框架那样去同意做处理、去进行 PO 模式的编写。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用Appium的keyevent方法来实现模拟手机按键操作。该方法可以模拟手机系统自带的按键,如回车、返回等。具体步骤如下: 1. 导入AppiumPython客户端库。 2. 创建一个Appium驱动,并连接到设备。 3. 使用keyevent方法,传入相应的按键代码来模拟按键操作。 以下是一个示例代码,演示如何在Python中使用Appium模拟手机按键操作: ``` # 导入AppiumPython客户端库 from appium import webdriver # 连接到设备 desired_caps = { 'platformName': 'Android', 'deviceName': 'your_device_name', 'appPackage': 'your_app_package', 'appActivity': 'your_app_activity', } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 使用keyevent方法模拟按键操作 # 模拟返回键,键代码为4 driver.press_keycode(4) # 模拟回车键,按键代码为66 driver.press_keycode(66) # 关闭驱动 driver.quit() ``` 请注意,以上代码只是一个示例,你需要根据你的具体需求和环境来配置`desired_caps`中的参数。同时,需要确保你已经正确安装了Appium和相应的Python客户端库。 引用和引用提供了关于模拟手机按键操作的相关信息,可以作为进一步了解的参考。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Appium+Python使用-模拟手机按键操作](https://blog.csdn.net/weixin_43846135/article/details/108639209)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [(python+appium+allure框架)基于python的UI自动化-针对ios自动化测试环境的部署](https://download.csdn.net/download/wangjunjun1207/82761118)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python手机按键脚本教程-Appium+Python-模拟手机按键操作](https://blog.csdn.net/weixin_39932762/article/details/109622602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值