Appium自動(dòng)化之滑動(dòng)九宮格

九宮格是一種比較常見的圖案加密方式驻粟,目前很多App都支持設(shè)置圖案鎖然评,Android原生系統(tǒng)也支持設(shè)九宮格圖案鎖屏尘惧。那么我們該如何使用Appium進(jìn)行滑動(dòng)操作呢炬转?

測試場景

1科阎、安裝app
2述吸、啟動(dòng)app
3、登錄后設(shè)置九宮格密碼


九宮格密碼

環(huán)境準(zhǔn)備

  • python
  • appium
  • 安卓手機(jī)
  • 測試app(鼠貸金融)

實(shí)例

這里實(shí)現(xiàn)主要是用到appium的TouchAction模塊锣笨。

TouchAction簡介

Touch Action包含一些列操作蝌矛,比如按壓、長按错英、點(diǎn)擊入撒、移動(dòng)、暫停走趋。由著些不同操作可以組成一套動(dòng)作衅金。使用TochAction需要先導(dǎo)入對應(yīng)的模塊
from appium.webdriver.common.touch_action import TouchAction

按壓

方法:press() 開始按壓一個(gè)元素或坐標(biāo)點(diǎn)(x,y)。通過手指按壓手機(jī)屏幕的某個(gè)位置簿煌。 press也可以接收屏幕的坐標(biāo)(x,y)氮唯。
語法:press(self, element=None, x=None, y=None)
實(shí)例:TouchAction(driver).press(x=0,y=308)

長按

方法:longPress() 開始按壓一個(gè)元素或坐標(biāo)點(diǎn)(x,y)。 相比press()方法姨伟,longPress()多了一個(gè)入?yún)⒊土穑热婚L按,得有按的時(shí)間吧夺荒。duration以毫秒為單位瞒渠。1000表示按一秒鐘良蒸。其用法與press()方法相同。
語法:long_press(self, element=None, x=None, y=None, duration=1000)

點(diǎn)擊

方法:tap() 對一個(gè)元素或控件執(zhí)行點(diǎn)擊操作伍玖。用法參考press()嫩痰。
語法:tap(self, element=None, x=None, y=None, count=1)

移動(dòng)

方法:move_to() 將指針從上一個(gè)點(diǎn)移動(dòng)到指定的元素或點(diǎn)。
語法:move_to(self, element=None, x=None, y=None)
注意:移動(dòng)到目位置有時(shí)是算絕對坐標(biāo)點(diǎn)窍箍,有時(shí)是基于前面一個(gè)坐標(biāo)點(diǎn)的偏移量串纺,這個(gè)要結(jié)合具體App來實(shí)踐。

暫停

方法:Wait()
實(shí)例:wait(1000)
暫停腳本的執(zhí)行椰棘,單位為毫秒纺棺。

釋放

方法release() 結(jié)束的行動(dòng)取消屏幕上的指針。
語法:release()

執(zhí)行

perform() 執(zhí)行的操作發(fā)送到服務(wù)器的命令操作邪狞。
語法:perform()

代碼實(shí)現(xiàn)

from appium import webdriver
from time import sleep
import os
from appium.webdriver.common.touch_action import TouchAction

# 獲取項(xiàng)目的根目錄路徑
pro_path = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__))))
print(pro_path)

# 獲取app安裝包所在路徑
app_path = os.path.join(pro_path, "app", "com.jinding.shuqian_4.2.9_liqucn.com.apk")
print(app_path)

# 真機(jī)
desired_caps = {
  "platformName": "Android",
  "platformVersion": "7.0",
  "deviceName": "Honor NOTE 8",
  "udid": "4556R1653643456",
  "appPackage": "com.jinding.shuqian",
  "appActivity": "com.jinding.shuqian.WelcomeActivity",
  "app": app_path

}

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
sleep(2)

print('檢測是否是第一次啟動(dòng)')
try:
  # 定位我的
  w = driver.find_element_by_id('com.jinding.shuqian:id/rb_center')
except Exception as e:
    print('是第一次啟動(dòng)祷蝌,需要授權(quán)')
    while True:
        try:
          # 定位授權(quán)按鈕
          accredit = driver.find_element_by_id('com.android.packageinstaller:id/permission_allow_button')   
        except Exception:
            break
        else:
            accredit.click()  # 點(diǎn)擊授權(quán)
else:
  w.click()  # 點(diǎn)擊我的

# 獲取屏幕尺寸
def get_size():
    x=driver.get_window_size()['width']
    y=driver.get_window_size()['height']
    return x,y

# 顯示屏幕尺寸(width,height)
l=get_size()
print(l)

# 向左滑動(dòng)
def swipeLeft():
    l=get_size()
    x1=int(l[0]*0.9)
    y1=int(l[1]*0.5)
    x2=int(l[0]*0.1)
    driver.swipe(x1,y1,x2,y1,1000)

#向左滑動(dòng)2次
for i in range(2):
    swipeLeft()
    sleep(0.5)

# 點(diǎn)擊立即體驗(yàn)
driver.find_element_by_id('com.jinding.shuqian:id/imageView_guide_join').click()
sleep(1)
# 點(diǎn)擊我的
driver.find_element_by_id('com.jinding.shuqian:id/rb_center').click()
sleep(1)
# 輸入用戶名
driver.find_element_by_id('com.jinding.shuqian:id/et_login_username').send_keys('1234556789')
# 輸入密碼
driver.find_element_by_id('com.jinding.shuqian:id/et_login_password').send_keys('123456')
# 點(diǎn)擊登錄
driver.find_element_by_id('com.jinding.shuqian:id/button_login').click()
sleep(1)
# 續(xù)滑動(dòng)兩次設(shè)置九宮格密碼
for i in range(2):
    # 設(shè)置坐標(biāo)
    TouchAction(driver).press(x=385, y=1122).wait(2000) \
        .move_to(x=385, y=1468).wait(1000) \
        .move_to(x=385, y=1820).wait(1000) \
        .move_to(x=720, y=1820).wait(1000) \
        .move_to(x=1049, y=1820).wait(1000) \
        .release().perform()
    sleep(1)
    # 點(diǎn)擊繼續(xù)
    driver.find_element_by_id('com.jinding.shuqian:id/right_btn').click()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市帆卓,隨后出現(xiàn)的幾起案子巨朦,更是在濱河造成了極大的恐慌,老刑警劉巖鳞疲,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罪郊,死亡現(xiàn)場離奇詭異,居然都是意外死亡尚洽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門靶累,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腺毫,“玉大人,你說我怎么就攤上這事挣柬〕本疲” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵邪蛔,是天一觀的道長急黎。 經(jīng)常有香客問我,道長侧到,這世上最難降的妖魔是什么勃教? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮匠抗,結(jié)果婚禮上故源,老公的妹妹穿的比我還像新娘。我一直安慰自己汞贸,他們只是感情好绳军,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布印机。 她就那樣靜靜地躺著,像睡著了一般门驾。 火紅的嫁衣襯著肌膚如雪射赛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天奶是,我揣著相機(jī)與錄音楣责,去河邊找鬼。 笑死诫隅,一個(gè)胖子當(dāng)著我的面吹牛腐魂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逐纬,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼蛔屹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了豁生?” 一聲冷哼從身側(cè)響起兔毒,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎甸箱,沒想到半個(gè)月后育叁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芍殖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年豪嗽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豌骏。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡龟梦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窃躲,到底是詐尸還是另有隱情计贰,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布蒂窒,位于F島的核電站躁倒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏洒琢。R本人自食惡果不足惜秧秉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纬凤。 院中可真熱鬧福贞,春花似錦、人聲如沸停士。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拇舀,卻和暖如春逻族,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骄崩。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工聘鳞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人要拂。 一個(gè)月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓抠璃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親脱惰。 傳聞我的和親對象是個(gè)殘疾皇子搏嗡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容