appium--滑动

简介: appium--滑动

前戏


在进行app自动化的时候,经常会进行滑动的操作,比如左右滑动,上下的滑动。在appium中滑动用到swipe方法进行滑动。

def swipe(开始横坐标,开始纵坐标,结束横坐标,结束纵坐标,时间(ms))

上面的图表示手机的左上角为坐标原点,往右为x正半轴,往下为y正半轴


获取屏幕的坐标


import pytest
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
class Testcsca():
    def setup(self):
        caps = {}
        caps["platformName"] = "Android"
        # caps["deviceName"] = "127.0.0.1:62001"
        caps["deviceName"] = "CLB0219314000452"
        caps["appPackage"] = "com.jgw.csca"
        caps["appActivity"] = "com.jgw.csca.view.activity.LoginActivity"
        caps["platfromVersion"] = "9.0.0"
        caps["autoGrantPermissions"] = True  # 设置自动授权权限
        caps['unicodeKeyboard'] = True  # 输入中文时要加,要不然输入不了中文
        caps['resetKeyboard'] = True  # 输入中文时要加,要不然输入不了中文
        caps['automationName'] = 'uiautomator2'
        self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
        self.driver.implicitly_wait(20)
def test_size(self):
        x = self.driver.get_window_size()['width']  # 获取x轴的长度
        y = self.driver.get_window_size()['height']  # 获取y轴的长度
        print(x, y)

结果

720 1280


使用坐标定位


from time import sleep
import pytest
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
class Testcsca():
    def setup(self):
        caps = {}
        caps["platformName"] = "Android"
        # caps["deviceName"] = "127.0.0.1:62001"
        caps["deviceName"] = "CLB0219314000452"
        caps["appPackage"] = "com.jgw.csca"
        caps["appActivity"] = "com.jgw.csca.view.activity.LoginActivity"
        caps["platfromVersion"] = "9.0.0"
        caps["autoGrantPermissions"] = True  # 设置自动授权权限
        caps['unicodeKeyboard'] = True  # 输入中文时要加,要不然输入不了中文
        caps['resetKeyboard'] = True  # 输入中文时要加,要不然输入不了中文
        caps['automationName'] = 'uiautomator2'
        self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
        self.driver.implicitly_wait(20)
    # 封装滑动的操作
    def swip(self):
        x = self.driver.get_window_size()['width']  # 获取x轴的长度
        y = self.driver.get_window_size()['height']  # 获取y轴的长度
        self.driver.swipe(360,900,360,100,1000)  # 从下往上滑动
    def test_login(self):
        self.driver.find_element_by_android_uiautomator('new UiSelector().text("请输入用户名")').send_keys('123')
        self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.jgw.csca:id/et_pwd")').send_keys('123456')
        self.driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.Button")').click()
        self.driver.find_element_by_id('com.jgw.csca:id/ll_first_sign').click()
        self.driver.find_element_by_xpath('//*[@text="已完成"]').click()
        sleep(2)
        self.swip()

 

虽然上面的方法实现了滑动,但上利用率确不高,因为手机的分辨率不同,所以会导致执行失败,可以使用相对坐标点的方法来进行滑动


相对滑动


from time import sleep
import pytest
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
class Testcsca():
    def setup(self):
        caps = {}
        caps["platformName"] = "Android"
        # caps["deviceName"] = "127.0.0.1:62001"
        caps["deviceName"] = "CLB0219314000452"
        caps["appPackage"] = "com.jgw.csca"
        caps["appActivity"] = "com.jgw.csca.view.activity.LoginActivity"
        caps["platfromVersion"] = "9.0.0"
        caps["autoGrantPermissions"] = True  # 设置自动授权权限
        caps['unicodeKeyboard'] = True  # 输入中文时要加,要不然输入不了中文
        caps['resetKeyboard'] = True  # 输入中文时要加,要不然输入不了中文
        caps['automationName'] = 'uiautomator2'
        self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
        self.driver.implicitly_wait(20)
    # 封装获取屏幕大小的操作
    def get_windoe_size(self):
        x = self.driver.get_window_size()['width']  # 获取x轴的长度
        y = self.driver.get_window_size()['height']  # 获取y轴的长度
        return x,y  # 返回的是一个元组
    # 滑动的封装
    def swip(self):
        size = self.get_windoe_size()
        x1 = int(size[0] * 0.5)  # size[0]取元组的第一个值,*0.5表示中间的点
        y1 = int(size[1] * 0.9)  # size[1]取元组的第二个值,*0.1表示距离底部近
        y2 = int(size[1] * 0.1)
        self.driver.swipe(x1, y1, x1, y2, 1000)
    def test_login(self):
        self.driver.find_element_by_android_uiautomator('new UiSelector().text("请输入用户名")').send_keys('123')
        self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.jgw.csca:id/et_pwd")').send_keys('123456')
        self.driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.Button")').click()
        self.driver.find_element_by_id('com.jgw.csca:id/ll_first_sign').click()
        self.driver.find_element_by_xpath('//*[@text="已完成"]').click()
        sleep(2)
        self.swip()

相关文章
|
6月前
|
测试技术
Appium自动化测试swipe滑动封装
Appium自动化测试swipe滑动封装
97 0
|
测试技术 定位技术
Python+Appium自动化测试(10)-TouchAction类与MultiAction类(控件元素的滑动、拖动,九宫格解锁,手势操作等)
滑动屏幕方法swipe一般用于对页面进行上下左右滑动操作,但自动化过程中还会遇到其他情况,如对控件元素进行滑动、拖拽操作,九宫格解锁,手势操作,地图的放大与缩小等。这些需要针对控件元素的滑动操作,或者点至点、元素至元素之间的滑动操作,使用swipe方法显然不是很方便,这时候就可以用到appium里提供TouchAction类和MultiAction类。
Python+Appium自动化测试(10)-TouchAction类与MultiAction类(控件元素的滑动、拖动,九宫格解锁,手势操作等)
|
测试技术
Python+Appium自动化测试(8)-swipe()滑动页面
app自动化测试过程中,经常会遇到滑动屏幕操作,appium框架的话我们可以使用webdriver提供的swipe()方法来对屏幕页面进行上滑、下滑、左滑、右滑操作。
Python+Appium自动化测试(8)-swipe()滑动页面
|
Android开发 编解码
appium+python自动化24-滑动方法封装(swipe)
swipe介绍 1.查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快。默认为None可不填,一般设置500-1000毫秒比较合适。 swipe(self, start_x, start_y, end_x, end_y, duration=None) ...
2664 0
|
JavaScript iOS开发
|
6月前
|
测试技术 API Python
Appium控件交互策略:优化自动化测试效率的关键方法
该文介绍了如何使用Selenium与APP进行交互,包括点击、输入和状态判断等操作。例如,通过element.click()点击控件,element.send_keys()输入文本,以及element.is_displayed()检查元素是否可见。还展示了如何获取元素属性,如resource-id、text和class,并提供了Python代码示例来定位并操作APP元素,如滑动条的显示、可点击性检测及点击滑动条中心位置。在编写测试脚本时,应注意元素定位和状态验证以确保测试稳定性。
|
14天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
55 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路