(一)快速體驗APPUI自動化-登錄流程

1 環(huán)境搭建

  • 安裝JDK, 配置環(huán)境變量

  • 安裝Android SDK, 配置環(huán)境變量

  • 安裝Appium-Windows-Desktop

  • 安裝Appium-Python-Client

  • 安裝python解釋器和Pycharm

  • 測試機Honor8

  • 測試軟件 會員寶秒到版(公司自研軟件)

Ps:網(wǎng)上有大把軟件安裝和環(huán)境搭建教程录粱,本文只探討APP-UI的自動化流程實現(xiàn)困乒,另外下面涉及到的python語法和元素定位蝎困、操作也是一樣的,在開始做自動化之前,建議先去打一打基礎(chǔ)

2 連接測試機

1.測試機用USB連接電腦,選擇傳輸文件模式

2.設(shè)置-開啟手機開發(fā)者模式(大部分安卓機多次點擊版本號),勾選USB調(diào)試選項

3.Win+R輸入cmd進(jìn)入命令提示符界面凿傅,使用adb命令查看連接情況,adb devices数苫,如下圖顯示聪舒,連接成功

QQ截圖20211111171215.png

3 配置測試機和測試軟件信息

1.打開appium,進(jìn)入測試機配置信息界面

QQ截圖20211111174438.png
QQ截圖20211111174542.png

2.使用adb命令查詢測試機數(shù)據(jù)文判,輸入配置信息

QQ截圖20211111175537.png
QQ截圖20211111175647.png
  • platformName 選擇填寫Android或iOS

  • platformVersion 測試機的系統(tǒng)版本,adb shell getprop ro.build.version.release

  • deviceName 測試機的系統(tǒng)型號室梅,adb shell getprop ro.product.model

  • appPackage戏仓、appActivity 需要打開軟件到要測試的界面,adb shell dumpsys window | findstr mCurrentFocu

  • noReset 值為False時亡鼠,每次重新啟動APP時都會清除數(shù)據(jù)赏殃,登陸需要重新輸入賬號密碼

3.Pycham新建文件,直接復(fù)制上圖中的配置信息间涵,建立driver對象

# 配置信息-Honor8-啟動界面

info = {

  "platformName": "Android",

  "platformVersion": "7.1.2",

  "deviceName": "127.0.0.1:62001",

  "appPackage": "com.hybunion.miaodao",

  "appActivity": "com.hybunion.ui.activity.SplashActivity",

  "noReset": "False"

}

# 連接appium仁热,傳入配置信息

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', info)

driver.implicitly_wait(10)

4.appium中保存配置信息為一個項目(下次使用時可直接打開),進(jìn)入測試界面

QQ截圖20211111180210.png
QQ截圖20211111180753.png
  • 左側(cè)區(qū)域顯示手機此時的界面
QQ截圖20211111180854.png

4 測試流程

1.點擊同意并繼續(xù)按鈕

  • 點擊頁面的一個元素后勾哩,右邊會展示這個元素的屬性抗蠢,我們可以根據(jù)這些屬性進(jìn)行元素定位,來進(jìn)行點擊思劳,滑動等操作
QQ截圖20211111181450.png
  • 點擊tab迅矛,進(jìn)行點擊操作,點擊刷新按鈕潜叛,進(jìn)入下一個界面(也可以在手機上操作后秽褒,點擊刷新壶硅,同步畫面)
QQ截圖20211112101719.png
QQ截圖20211111181634.png
# 點擊同意并繼續(xù)按鈕

driver.find_element('id', 'com.hybunion.miaodao:id/tv_confirm').click()

2.滑動引導(dǎo)頁,點擊立即體驗按鈕

QQ截圖20211111182241.png
  • 在點擊體驗按鈕時销斟,發(fā)現(xiàn)無法選中按鈕來定位元素庐椒,只能選中整個頁面
QQ截圖20211112114303.png
  • 這時候要就結(jié)合另一個工具 uiautomatorviewer,在sdk文件夾下找到并啟動
QQ截圖20211112114354.png
  • 使用時蚂踊,要關(guān)閉appium獲取元素界面约谈,成功獲得元素信息
QQ截圖20211112115005.png
# 左劃三次

sleep(4)

x = driver.get_window_size()['width']

y = driver.get_window_size()['height']

for i in range(3):

    driver.swipe(x * 0.9, y * 0.5, x * 0.1, y * 0.5, 1000)

# 點擊立即體驗按鈕

driver.find_element('id', 'com.hybunion.miaodao:id/btn_guide_enter').click()

3.輸入手機號,輸入密碼悴势,點擊登錄按鈕

  • 在左邊界面點擊輸入框后窗宇,點擊Send Keys,在彈出的輸入框中輸入文本
QQ截圖20211112133023.png
# 輸入手機號特纤,輸入密碼军俊,點擊登錄按鈕

driver.find_element('id', 'com.hybunion.miaodao:id/edt_userName_login').send_keys('12345678902')

driver.find_element('id', 'com.hybunion.miaodao:id/edt_pwd_login').send_keys('qqqq1111')

driver.find_element('id', 'com.hybunion.miaodao:id/tv_bt_login').click()

4.權(quán)限彈窗點擊不允許、禁止

QQ截圖20211112131559.png
QQ截圖20211112131733.png
# 點擊不允許

driver.find_element('id', 'com.hybunion.miaodao:id/tv_ok_left').click()

driver.find_element('id', 'com.hybunion.miaodao:id/tv_ok_left').click()

driver.find_element('id', 'com.android.packageinstaller:id/permission_deny_button').click()

5.輸入驗證碼捧存,點擊下一步

QQ截圖20211112132042.png
# 輸入驗證碼粪躬,點擊下一步

driver.find_element('id', 'com.hybunion.miaodao:id/edt_verify_code').send_keys('666666')

driver.find_element('id', 'com.hybunion.miaodao:id/tv_next').click()

6.指紋驗證點擊取消,跳過

QQ截圖20211112132420.png
# 點擊取消昔穴,跳過

driver.find_element('id', 'com.hybunion.miaodao:id/cancel_btn').click()

driver.find_element('id', 'com.hybunion.miaodao:id/tv_skip').click()

7.設(shè)置手勢密碼

QQ截圖20211112132520.png
# 畫出一個W圖案

el1 = driver.find_element('xpath', '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[1]/android.view.ViewGroup/android.widget.ImageView[1]')

el7 = driver.find_element('xpath', '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[1]/android.view.ViewGroup/android.widget.ImageView[7]')

el5 = driver.find_element('xpath', '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[1]/android.view.ViewGroup/android.widget.ImageView[5]')

el9 = driver.find_element('xpath', '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[1]/android.view.ViewGroup/android.widget.ImageView[9]')

el3 = driver.find_element('xpath', '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[1]/android.view.ViewGroup/android.widget.ImageView[3]')

TouchAction(driver).press(el1).move_to(el7).move_to(el5).move_to(el9).move_to(el3).release().perform()

TouchAction(driver).press(el1).move_to(el7).move_to(el5).move_to(el9).move_to(el3).release().perform()

8.驗證進(jìn)入的界面是否有刷卡收款字段

QQ截圖20211112132756.png
# 斷言

expect = '刷卡收款'

reality = driver.find_element('id', 'com.hybunion.miaodao:id/tv_swipcard_text').text

assert expect  == reality, '{}不等于{}'.format(expect , reality)

9.退出

sleep(5)

driver.quit()
  • 以上镰官,python結(jié)合appium簡單實現(xiàn)登錄流程的ui自動化就完成了,這個是公司的實際項目吗货,如果順利的話后面會繼續(xù)分享這個UI自動化框架的搭建過程泳唠,包括封裝方法,數(shù)據(jù)分離宙搬,用例管理笨腥,框架優(yōu)化等系列內(nèi)容。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末勇垛,一起剝皮案震驚了整個濱河市脖母,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闲孤,老刑警劉巖谆级,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異讼积,居然都是意外死亡肥照,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門勤众,熙熙樓的掌柜王于貴愁眉苦臉地迎上來建峭,“玉大人,你說我怎么就攤上這事决摧∫谡簦” “怎么了凑兰?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長边锁。 經(jīng)常有香客問我姑食,道長,這世上最難降的妖魔是什么茅坛? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任音半,我火速辦了婚禮,結(jié)果婚禮上贡蓖,老公的妹妹穿的比我還像新娘曹鸠。我一直安慰自己,他們只是感情好斥铺,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布彻桃。 她就那樣靜靜地躺著,像睡著了一般晾蜘。 火紅的嫁衣襯著肌膚如雪邻眷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天剔交,我揣著相機與錄音肆饶,去河邊找鬼。 笑死岖常,一個胖子當(dāng)著我的面吹牛驯镊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竭鞍,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼板惑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了笼蛛?” 一聲冷哼從身側(cè)響起洒放,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蛉鹿,失蹤者是張志新(化名)和其女友劉穎滨砍,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妖异,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡惋戏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了他膳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斋泄。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡烘浦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坎弯,到底是詐尸還是另有隱情,我是刑警寧澤湖笨,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響订雾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜矛洞,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一洼哎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沼本,春花似錦噩峦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至郊丛,卻和暖如春李请,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背厉熟。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工导盅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人揍瑟。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓白翻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绢片。 傳聞我的和親對象是個殘疾皇子滤馍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

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

  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險厭惡者,不喜歡去冒險底循,但是人生放棄了冒險巢株,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 6,054評論 0 4
  • 公元:2019年11月28日19時42分農(nóng)歷:二零一九年 十一月 初三日 戌時干支:己亥乙亥己巳甲戌當(dāng)月節(jié)氣:立冬...
    石放閱讀 6,882評論 0 2
  • 今天上午陪老媽看病熙涤,下午健身房跑步阁苞,晚上想想今天還沒有斷舍離,馬上做祠挫,衣架和旁邊的的布衣架那槽,一看亂亂,又想想自己是...
    影子3623253閱讀 2,913評論 1 8