appium--滑动

书史足自悦,安用勤与劬。这篇文章主要讲述appium--滑动相关的知识,希望能为你提供帮助。
前戏【appium--滑动】在进行app自动化的时候,经常会进行滑动的操作,比如左右滑动,上下的滑动。在appium中滑动用到swipe方法进行滑动。
def swipe(开始横坐标,开始纵坐标,结束横坐标,结束纵坐标,时间(ms))

appium--滑动

文章图片

上面的图表示手机的左上角为坐标原点,往右为x正半轴,往下为y正半轴
获取屏幕的坐标
import pytest from appium import webdriver from selenium.webdriver.support.ui import WebDriverWaitclass 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 sleepimport pytest from appium import webdriver from selenium.webdriver.support.ui import WebDriverWaitclass 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 sleepimport pytest from appium import webdriver from selenium.webdriver.support.ui import WebDriverWaitclass 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()

 

    推荐阅读