启动页面滑动及使用

感情迁移 提交于 2020-01-13 22:24:23

一、页面滑动原理:
因为页面上没有可使用的任何元素,所以页面滑动原理即为坐标轴原理,值得注意的是,这个坐标轴不想我们初中数学的坐标轴(分为四个象限),即我们学习的这个坐标轴左上角为(0,0)点,y向下,x向右,没有负数的情况
在这里插入图片描述
我们向左滑动:x为:从600——>50
向右滑动:x为从50——>600
在这里插入图片描述
向上、向下滑动:
在这里插入图片描述
说了这么多,其实在appium里面,我们要用的函数是:
driver.swipe(x,y,x1,y1,time)
我们通过adb tools文件里面的uiautomatorviewer.bat获取坐标点
在这里插入图片描述
坐标点区间如下:
在这里插入图片描述
具体代码实现如下:

# coding=utf-8

from appium import webdriver

desired_caps = {
                'platformName': 'Android',
                'deviceName': '127.0.0.1:62001',
                'platformVersion': '5.1.1',
                # apk包名
                'appPackage': 'com.sina.weibo',
                # apk的launcherActivity
                'appActivity': 'com.sina.weibo.VisitorMainTabActivity'
                }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
driver.swipe(700,400,50,400)  #不带滑动时间
driver.swipe(700,400,50,400,2000)   #带滑动时间2s

如上代码,我们可以看到是有缺点的,我们固定了坐标轴,如果我们换一个手机,上面的代码是不是可能就不好使了,所以我们就要换一种方案:通过屏幕比例
代码如下:

# coding=utf-8

from appium import webdriver
desired_caps = {
                'platformName': 'Android',
                'deviceName': '127.0.0.1:62001',
                'platformVersion': '5.1.1',
                # apk包名
                'appPackage': 'com.sina.weibo',
                # apk的launcherActivity
                'appActivity': 'com.sina.weibo.VisitorMainTabActivity'
                }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
size = driver.get_window_size()  #获取屏幕大小
width = size["width"]   #获取宽度
height = size["height"]  #获取高度
x1 = width/10*9    #9/10 处
y1 = height/2      #1/2出
x = width/10
driver.swipe(x1,y1,x,y1)

但是这样写的话,如果有1000个屏幕,这样写是不是很繁琐,所以,我们要学习python函数(封装),如果其他地方要是用这个方法,就可以调用:
封装:就是把重复的代码封装在一个盒子里,其他地方用到,调用就可以了,减少了代码的重复性,增加了复用性

# coding=utf-8

from appium import webdriver
def get_driver():
    desired_caps = {
                    'platformName': 'Android',
                    'deviceName': '127.0.0.1:62001',
                    'platformVersion': '5.1.1',
                    # apk包名
                    'appPackage': 'com.sina.weibo',
                    # apk的launcherActivity
                    'appWaitActivity': 'com.sina.weibo.VisitorMainTabActivity' #切换activity
                    }
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    return driver
driver = get_driver()
#获取屏幕宽高
def get_size():
    size = driver.get_window_size()
    width = size["width"]
    height = size["height"]
    return width,height

#向左边滑动
def swipe_left():
    #[100,200]
    x1 = get_size()[0]/10*9
    y1 = get_size()[1]/2
    x = get_size()[0]/10
    driver.swipe(x1,y1,x,y1)

#向右滑动
def swipe_right():
    x1 = get_size()[0] / 10 * 9
    y1 = get_size()[1] / 2
    x = get_size()[0] / 10
    driver.swipe(x,y1,x1,y1)

#向上滑动
def swipe_up():
    x1 = get_size()[0]/2
    y1 = get_size()[1]/10*9
    y = get_size()[1]/10
    driver.swipe(x1,y1,x1,y)

#向下滑动
def swipe_down():
    x1 = get_size()[0]/2
    y1 = get_size()[1]/10*9
    y = get_size()[1]/10
    driver.swipe(x1,y,x1,y1)

#滑动方向
def swipe_on(direction):
    if direction == "left":
        swipe_left()
    elif direction == "right":
        swipe_right()
    elif direction == "up":
        swipe_up()
    else:
        swipe_down()
swipe_on("up")

在调试过程中,遇到一个问题:

在使用appium过程中遇到了执行一个用例时有多个不同的acitivity的情况,以下为app内部切换acitivity的方法:
如果需要多次切换activity,则appWaitActivity来实现。

    desired_caps = {
                    'platformName': 'Android',
                    'deviceName': '127.0.0.1:62001',
                    'platformVersion': '5.1.1',
                    # apk包名
                    'appPackage': 'com.sina.weibo',
                    # apk的launcherActivity
                    'appWaitActivity': 'com.sina.weibo.VisitorMainTabActivity' #切换activity
                    #'appActivity': 'com.sina.weibo.VisitorMainTabActivity'  # 不能切换activity
                    }
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

这篇主要说明了启动页面滑动使用了函数,还有一个注意点,就是多个不同的acitivity的情况

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!