Python+AirTest+Pytest進(jìn)行iOS自動(dòng)化

一、環(huán)境準(zhǔn)備盛卡,

1助隧、xcode

2、Airtest

3滑沧、python

4并村、node.js(npm)

5、cnpm

6滓技、ios-deploy

7哩牍、brew

8、libimobliedevice依賴庫(真機(jī))

9令漂、carthage依賴庫(被webdriveragent使用)

10膝昆、在 iOS 設(shè)備上安裝 WebDriverAgent

1)安裝 WebDriverAgent 依賴

# Appium 桌面版本

cd? /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

sh ./Scripts/bootstrap.sh

# Appium 命令行版本

cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

sh ./Scripts/bootstrap.sh

2)使用 Xcode 打開 WebDriverAgent 項(xiàng)目:點(diǎn)擊?Finder→前往→前往文件夾…,輸入以下路徑叠必,點(diǎn)擊前往荚孵,雙擊文件夾下的?WebDriverAgent.xcodeproj?打開項(xiàng)目

3)在 Xcode 中添加開發(fā)者賬號:點(diǎn)擊上方菜單欄的?Xcode→Preferences→Accounts,點(diǎn)擊左下角的?+?按鈕挠唆,選擇?add Apple ID处窥,添加自己的 Apple ID 作為開發(fā)者賬號

4)編譯 WebDriverAgentLib

5)編譯 WebDriverAgentRunner

6)將 WebDriverAgentRunner 安裝到 iOS 設(shè)備

7)調(diào)用 WebDriverAgent 接口

設(shè)置代理?

iproxy可以將iPhone端口映射到計(jì)算機(jī)端口,然后可以通過訪問計(jì)算機(jī)端口來訪問電話端口玄组。

通常情況下滔驾,您需要通過設(shè)置USB代理來訪問手機(jī)上的代理。您可能無法直接通過wifi訪問手機(jī)俄讹。出于特定原因哆致,請參閱問題詳細(xì)信息

通過Homebrew安裝iproxy

$ brew install libimobiledevice

b運(yùn)行iproxy

$ iproxy 8100 8100

啟動(dòng)成功后患膛,您可以嘗試在瀏覽器中訪問http://127.0.0.1:8100/status摊阀。如果訪問成功,并且您可以看到一些json格式的手機(jī)信息踪蹬,則表示啟動(dòng)成功胞此。此時(shí),請?jiān)L問http://127.0.0.1:8100/inspector以查看瀏覽器上投射的iPhone屏幕跃捣;接下來就可以開始執(zhí)行代碼了漱牵。

二、本地python環(huán)境運(yùn)行

1疚漆、用本地?python?環(huán)境跑?Airtest?或者?poco?腳本之前酣胀,需要先安裝上這倆個(gè)庫(使用?pip install airtest?和?pip install pocoui?來安裝)刁赦。

2、腳本中進(jìn)行設(shè)備連接

# 方法一:在auto_setup()接口添加設(shè)備

auto_setup(__file__,devices=["Android://127.0.0.1:5037/SJE5T17B17"])

auto_setup(__file__,devices=["iOS:///127.0.0.1:8100"])

# 方法二:用connect_device()方法連接設(shè)備

dev = connect_device("Android://127.0.0.1:5037/SJE5T17B17")

# 方法三:用init_device()方法連接設(shè)備

init_device(platform="Android",uuid="SJE5T17B17")

3闻镶、檢查圖片地址

程序可以根據(jù)這個(gè)相對路徑找到截圖文件的原因在于甚脉,我們利用?auto_setup(__file__)?初始化腳本的時(shí)候,傳入了一個(gè)?basedir?(參數(shù)值為__file__铆农,即當(dāng)前腳本所在路徑)牺氨,程序會默認(rèn)根據(jù)這個(gè)?basedir?去尋找腳本中存在的相對路徑。

因此我們要把腳本中用到的截圖文件墩剖,也復(fù)制到新建項(xiàng)目的所在目錄下波闹,這樣才可以讓程序根據(jù)截圖腳本上的相對路徑正確找到我們的截圖文件。

當(dāng)然我們也可以選擇把截圖腳本上面的相對路徑涛碑,改成絕對路徑,這樣程序也能夠根據(jù)絕對路徑找到我們的截圖文件:

touch(Template(r"D:/test/tpl1590718697837.png", rgb=True, record_pos=(-0.383, 0.717), resolution=(1080, 1920)))

4孵淘、生成測試報(bào)告

# generate html report

from airtest.report.report import simple_report

simple_report(__file__, logpath=True)

其實(shí)我們是希望不論測試用例能不能執(zhí)行通過蒲障,都可以給我們一個(gè)報(bào)告反饋,所以我們可以使用?try-finally?語句瘫证,無論是否發(fā)生異常都將執(zhí)行最后的代碼:

try:

? ? touch(Template(r"tpl1590718697837.png", threshold=0.9, record_pos=(0.378, 0.098), resolution=(1080, 1920)))

finally:

? ? # generate html report

? ? simple_report(__file__, logpath=True)

三揉阎、代碼結(jié)構(gòu)


common:封裝了一些通用函數(shù),如獲取圖片地址背捌、上滑毙籽、翻頁等

driver:設(shè)置連接的測試設(shè)備

page:按頁面定義,用來封裝獲取頁面元素

report:用來放airtest的測試報(bào)告及截圖數(shù)據(jù)

resources:airtest框架可以使用圖像識別進(jìn)行自動(dòng)化毡庆,存放測試圖片

testcase:按頁面定義坑赡,用來管理case


conftest:配置裝飾器,用于執(zhí)行特定函數(shù)

run:用于啟動(dòng)整個(gè)項(xiàng)目


四么抗、總結(jié)

整個(gè)框架就是基于Pytest的自動(dòng)化管理用例毅否,Airtest的2大定位框架進(jìn)行搭建。

Airtest:對公眾號蝇刀、小程序的元素控件進(jìn)行抓取螟加,可使用Poco定位或Airtest圖像識別進(jìn)行

Pytest:對整體用例集、用例進(jìn)行管理吞琐;可單條捆探,批量執(zhí)行,分類執(zhí)行等等站粟。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末黍图,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卒蘸,更是在濱河造成了極大的恐慌雌隅,老刑警劉巖翻默,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異恰起,居然都是意外死亡修械,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門检盼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肯污,“玉大人,你說我怎么就攤上這事吨枉”脑” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵貌亭,是天一觀的道長柬唯。 經(jīng)常有香客問我,道長圃庭,這世上最難降的妖魔是什么锄奢? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮剧腻,結(jié)果婚禮上拘央,老公的妹妹穿的比我還像新娘。我一直安慰自己书在,他們只是感情好灰伟,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著儒旬,像睡著了一般栏账。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上义矛,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天发笔,我揣著相機(jī)與錄音,去河邊找鬼凉翻。 笑死了讨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的制轰。 我是一名探鬼主播前计,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼垃杖!你這毒婦竟也來了男杈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤调俘,失蹤者是張志新(化名)和其女友劉穎伶棒,沒想到半個(gè)月后旺垒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肤无,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年先蒋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宛渐。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡竞漾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窥翩,到底是詐尸還是另有隱情业岁,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布寇蚊,位于F島的核電站笔时,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏仗岸。R本人自食惡果不足惜糊闽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望爹梁。 院中可真熱鬧,春花似錦提澎、人聲如沸姚垃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽积糯。三九已至,卻和暖如春谦纱,著一層夾襖步出監(jiān)牢的瞬間看成,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工跨嘉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留川慌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓祠乃,卻偏偏與公主長得像梦重,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子亮瓷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361

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