Python+Appium自動化之swipe()滑動頁面

app自動化測試過程中贮预,經常會遇到滑動屏幕操作,appium框架的話我們可以使用webdriver提供的swipe()方法來對屏幕頁面進行上滑排嫌、下滑畸裳、左滑、右滑操作淳地。

  • swipe()方法源碼如下:

swipe()方法的參數說明:
start_x:起始橫坐標
start_y:起始縱坐標
end_x:結束時橫坐標
end_y:結束時縱坐標
duration:滑動持續(xù)時間躯畴,單位毫秒,默認None(一般設置500-1000毫秒比較合適)

  • duration參數需要注意的是薇芝,在移動設備上滑動時間的快慢所形成的效果是不一樣的。以今日頭條APP首頁上滑為例丰嘉,同樣的滑動距離夯到,滑動較快則出現類似翻頁的效果,而滑動較慢則是同一則新聞從起始位置滑動到結束位置饮亏。
  • 手機屏幕的坐標:以手機屏幕左上角為坐標中心(0, 0)耍贾,向右話滑動則縱坐標不變,橫坐標變大路幸;向下滑動則橫坐標不變荐开,縱坐標變大。在uiautomatorviewer中可以元素左上角坐標與右下角的坐標简肴,如下圖中"視頻"按鈕
  • 因為不同測試機屏幕的尺寸很可能有差異晃听,所以一般不使用固定的的坐標來滑動屏幕,而是先獲取測試機屏幕尺寸砰识,再通過獲取的手機屏幕尺寸來確定滑動的起始能扒、結束坐標,這樣在我們更換了測試手機后不需要更改方法辫狼。使用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)
# 屏幕從上向下滑動
driver.swipe(width*0.5, height*0.1, width*0.5, height*0.9, 1000)
# 屏幕從左向右滑動
driver.swipe(width*0.1, height*0.5, width*0.9, height*0.5, 1000)
# 屏幕從右向左滑動
driver.swipe(width*0.9, height*0.5, width*0.1, height*0.5, 1000)
  • 我們還可以將滑動屏幕的操作封裝成方法,方便后續(xù)調用:
# project/common/baseOpera.py

class BaseOpera(object):
    '''
    基礎操作
    '''
    def __init__(self, driver):
        self.driver = driver
        self.duration = 1000

    @property
    def width(self):
        '''獲取屏幕寬度'''
        return self.driver.get_window_size()['width']

    @property
    def height(self):
        '''獲取屏幕高度'''
        return self.driver.get_window_size()['height']

    def swipe_to_left(self, base=0.1):
        '''從右向左滑動'''
        return self.driver.swipe(self.width*(1-base),
                                    self.height*0.5,
                                    self.width*base,
                                    self.height*0.5,
                                    self.duration
                                    )

    def swipe_to_right(self, base=0.1):
        '''從左向右滑動'''
        return self.driver.swipe(self.width*base,
                                    self.height*0.5,
                                    self.width*(1-base),
                                    self.height*0.5,
                                    self.duration
                                    )

    def swipe_to_top(self, base=0.9):
        '''從下向上滑動'''
        return self.driver.swipe(self.width*0.5,
                                    self.height*base,
                                    self.width*0.5,
                                    self.height*(1-base),
                                    self.duration
                                    )

    def swipe_to_bottom(self, base=0.9):
        '''從上向下滑動'''
        return self.driver.swipe(self.width*0.5,
                                    self.height*(1-base),
                                    self.width*0.5,
                                    self.height*base,
                                    self.duration
                                    )

調用baseOpera.py模塊中的滑動方法膨处,向上滑動查看今日頭條首頁新聞见秤,簡單示意如下:

from appium import webdriver
from common.baseOpera import BaseOpera

def android_driver():
    desired_caps = {
        "platformName": "Android",
        "platformVersion": "10",
        "deviceName": "PCT_AL10",
        "appPackage": "com.ss.android.article.news",
        "appActivity": ".activity.MainActivity",
        "automationName": "uiautomator2",
        "unicodeKeyboard": True,
        "resetKeyboard": True,
    }
    # 啟動app
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    return driver

def watch_news():
    # 向上滑動今日頭條首頁
    driver = android_driver()
    bo = BaseOpera(driver)
    bo.swipe_to_top()

if __name__ == '__main__':
    watch_new()
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末砂竖,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子鹃答,更是在濱河造成了極大的恐慌乎澄,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挣跋,死亡現場離奇詭異三圆,居然都是意外死亡,警方通過查閱死者的電腦和手機避咆,發(fā)現死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門舟肉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人查库,你說我怎么就攤上這事路媚。” “怎么了樊销?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵整慎,是天一觀的道長。 經常有香客問我围苫,道長裤园,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任剂府,我火速辦了婚禮拧揽,結果婚禮上,老公的妹妹穿的比我還像新娘腺占。我一直安慰自己淤袜,他們只是感情好,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布衰伯。 她就那樣靜靜地躺著铡羡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪意鲸。 梳的紋絲不亂的頭發(fā)上烦周,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機與錄音怎顾,去河邊找鬼论矾。 笑死,一個胖子當著我的面吹牛杆勇,可吹牛的內容都是我干的贪壳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼蚜退,長吁一口氣:“原來是場噩夢啊……” “哼闰靴!你這毒婦竟也來了彪笼?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蚂且,失蹤者是張志新(化名)和其女友劉穎配猫,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體杏死,經...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡泵肄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了淑翼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腐巢。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玄括,靈堂內的尸體忽然破棺而出冯丙,到底是詐尸還是另有隱情,我是刑警寧澤遭京,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布胃惜,位于F島的核電站,受9級特大地震影響哪雕,放射性物質發(fā)生泄漏船殉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一斯嚎、第九天 我趴在偏房一處隱蔽的房頂上張望捺弦。 院中可真熱鬧,春花似錦孝扛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至慌申,卻和暖如春陌选,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹄溉。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工咨油, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人柒爵。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓役电,卻偏偏與公主長得像,于是被迫代替她去往敵國和親棉胀。 傳聞我的和親對象是個殘疾皇子法瑟,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355