mac系統(tǒng)下搭建ios自動化測試環(huán)境(appium+python)

最近因為工作需要進行了mac系統(tǒng)下的ios真機自動化測試環(huán)境搭建牙勘,踩了很多坑,還好最后跑通了。

真機連接效果如下:


image

設備和主要的軟件版本如下:

iphone xs 12.3.1;mac os 10.14.5溢豆;xcode 10.2.1;appium-desk 1.13.0瘸羡;appium 無界面版 1.14.0漩仙; node.js 10.16.0;python3.7;JDK12.0.2 队他。
友情提示:建議每一條命令前添加sudo進行授權卷仑,避免permission deny 造成安裝失敗。

環(huán)境搭建

JDK安裝

去oracle官網(wǎng)https://www.oracle.com/technetwork/java/javase/downloads/index.html
下載JDK麸折,下面兩個都可以锡凝,下載需要注冊賬號。

JDK.png

JK.png

下載完成后無腦下一步下一步就好磕谅。
詳細步驟可參考https://www.cnblogs.com/52py/p/8065066.html
安裝配置完成后在終端輸入 java -verison 如果出現(xiàn)java version "12.0.2" 2019-07-16 字樣說明安裝成功私爷。

brew

安裝homebrew:homebrew 簡稱brew,是Mac OSX上的軟件包管理工具膊夹,能在Mac中方便的安裝軟件或者卸載軟件衬浑,類似于pip、apt-get放刨、yum等神器工秩。
安裝命令

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 

node.js

可用兩種方法安裝
1 官網(wǎng)下載后按照提示進行安裝
https://nodejs.org/zh-cn/
2 使用brew命令安裝

brew install node

安裝完成后在終端輸入 node -v 如果出現(xiàn) 類似v10.16.0 字樣說明安裝成功。

依賴插件ibimobiledevice进统、carthage助币、ios-deploy、xcpretty

brew install libimobiledevice --HEAD
brew install carthage
npm install -g ios-deploy
gem install xcpretty

Xcode

推薦在App Store中安裝螟碎,軟件一共6.5G左右眉菱,請保持網(wǎng)絡暢通。

Appium

appium是手機和pc之間的代理服務器掉分,完成兩者的通信處理俭缓。(沒錯,它就是個中間商)
appium-desk版本可在官網(wǎng)下載安裝http://appium.io/downloads.html
appium-server 無界面版使用npm命令安裝酥郭,但鑒于部分資源被墻华坦,建議使用淘寶鏡像。

npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install -g appium #appium@1.13.0可指定安裝版本

安裝appium-doctor檢查appium環(huán)境不从。

cnmp install -g appium-doctor

終端運行appium-doctor --ios


QQ20190725-154336.png

若提示xcode未安裝在終端運行命令惜姐,設置xcode路徑。

 xcode-select –switch /Applications/Xcode.app/Contents/Developer

參考http://blog.sina.com.cn/s/blog_68f262210102uz5y.html

WebDriverAgent (wda)

之前查閱了很多資料椿息,說的是appium自帶的wda有問題歹袁,無法使用inspector進行頁面元素定位,但我決定使用appium-desk進行定位就沒有單獨去下載GIthub上的wda-master寝优。

  • 首先是桌面版的wda
  1. 文件路徑:
    /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
    在終端cd到上述目錄宇攻,運行命令安裝依賴。
./Scripts/bootstrap.sh

安裝完成后點擊mac右上角的聚焦搜索倡勇,粘貼路徑敲擊回車。


image.png
  1. 右鍵通過Xcode打開.xcodeproj文件。


    image.png
  2. 首先打開Xcode-performance-account登錄你的AppleID (我用的公司開發(fā)者賬戶妻熊,如果你是個人賬戶你就百度解決證書的問題)
  3. 在wdaLib General設置中選擇自動簽名夸浅,選擇你的公司team。bundleid 是APP的唯一標識符扔役,直接問開發(fā)獲得帆喇。


    image.png

    確認 wdaLib build setting 中deployment系統(tǒng)的版本


    image.png

    packaging 中的project bundleid 和之前填寫的是否一致。
    image.png

    signing簽名是否正確


    image.png
  4. 在wdaRunner General中設置自動簽名亿胸,如果報錯提示 Try again 坯钦,不要著急,先設置build setting侈玄。


    image.png

    檢查build setting中packaging 的bundleid是否正確


    image.png

    設置簽名
    image.png
  5. 連接上你的水果機婉刀,Scheme選擇wdarunner,destination選擇你的真機序仙。


    image.png

    image.png
  6. 點擊左上角三角形進行構建突颊,首次構建可能會要求你輸入訪問鑰匙的密碼,輸入你的賬戶密碼即可(我輸入的是開機密碼)潘悼,提示build succeeded律秃。然后點擊-product-test進行將wda安裝到真機。安裝完成后在真機的safari瀏覽器輸入 127.0.0.1:8100/status 顯示如下則表示安裝成功治唤。


    QQ20190725-0.PNG
  7. 打開appium-desk 棒动,設置ip端口號,一般保持默認即可宾添,如果你已經(jīng)開啟了無界面版的appium-sever船惨,就把端口修改和前者不同即可,高級設置也保持默認狀態(tài)辞槐,點擊start server 開啟appim服務掷漱。
    (mac系統(tǒng)與windows不同,只能打開一個appium-desk榄檬,所以你要同時做多臺真機的測試那就必須要安裝無界面的appium-sever卜范。)
    image.png

    服務開啟成功的界面如下圖,右上角的三個方框的含義分別是:建立inspector session(用于獲取真機頁面元素);導出appium運行日志;關閉appium服務颅崩。
    image.png

    點擊右上角的小問號按鈕巩螃,彈出連接窗口,填入對應參數(shù)娃磺,參數(shù)具體含義可見
    appium接口參數(shù)(推薦使用google瀏覽器,鼠標右鍵可翻譯頁面內(nèi)容)
image.png
  1. 參數(shù)填寫完成后點擊右下角start session 手機上點擊信任此電腦,并且開啟設置-開發(fā)者-enable ui automation 湾宙,轉(zhuǎn)跳到愛的魔力轉(zhuǎn)圈圈界面,第一次連接的時間可能會很長。


    image.png
  • 無界面版的appium wda安裝
    無界面相對桌面版的優(yōu)勢是:可以多開侠鳄;占用更少的資源埠啃;啟動更快。
    如果已經(jīng)獲取了頁面元素就建議使用無界面版跑測試腳本伟恶。

路徑/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
同上碴开,cd到目錄執(zhí)行命令后使用xcode構建。

./Scripts/bootstrap.sh

如果之前安裝過appium-desk的wda 博秫,xcode會卸載后重新安裝潦牛,安裝過程中如果提示application install failed 就手動卸載真機上的wda。

敲黑板
安裝誰的wda就用誰去連接真機挡育。
比如說:我通過xcode構建了appium-desk版的wda到真機上巴碗,那么我就只能通過desk版去連接真機,不能通過無界面appium+python連接静盅!

Python

mac 系統(tǒng)自帶python2良价,可通過官網(wǎng)下載并安裝python3,在終端輸入python3進入python IDE說明安裝成功蒿叠。

pip

pip 是 Python 包管理工具,該工具提供了對Python 包的查找明垢、下載、安裝市咽、卸載的功能痊银,目前如果你在 python.org 下載最新版本的安裝包,則是已經(jīng)自帶了該工具施绎。
你可以通過以下命令來判斷是否已安裝:

pip3 --version

安裝成功提示如下


image.png

如果提示c'ommand not found可以通過如下命令安裝

sudo easy_install pip

appium-python-client

appium-python-client 是讓 python 連接 appium 服務的一個驅(qū)動溯革,也就是一個 python 語言封裝和 appium api 通訊的一個庫。
安裝方法:

pip install Appium-Python-Client

驗證:


image.png

引入webdriver模塊不報錯谷醉。

測試腳本

至此我們的ios測試環(huán)境已經(jīng)部署的差不多了致稀,接下來就用腳本進行測試吧。

  • 通過xcode給真機構建wda
  • 啟動appium服務(有無界面版均可)
  • 編寫腳本俱尼,通過入口參數(shù)連接至appium
  • 執(zhí)行腳本
# coding=utf-8

from appium import webdriver
import time

class Appium:
    # 啟動app
    def __init__(self):
        desired_caps = {}
        desired_caps['platformName'] = 'iOS'  # 設備系統(tǒng)
        desired_caps['platformVersion'] = '12.3.1'  # 設備系統(tǒng)版本
        desired_caps['deviceName'] = 'WANG的 iPhone'  # 設備名稱
        desired_caps['bundleId'] = 'com.xxx.xxx'  # 測試app包名
        desired_caps['udid'] = 'xxxxxx-xxxxxxxx' #設備id
        desired_caps['automationName'] = 'XCUITest'  # 測試框架 
        desired_caps['noReset']='true' # 保留app的登錄狀態(tài)
        desired_caps['xcodeSigningId']='iOS Developer'
        desired_caps['xcodeOrgId']='aaaaa' # 團隊id
        desired_caps['newCommandTimeout']=3600
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)  # 保持端口號和appium服務端口一致
        # 使用隱式等待或者顯示等待抖单,盡量減少time.sleep強制等待的使用提高腳本執(zhí)行速度。
        self.driver.implicitly_wait(5)

    def test(self):
        # 點擊一個id定位的元素
        self.driver.find_element_by_accessibility_id("").click()
        # 此處使用time.sleep是為了能讓肉眼區(qū)分操作遇八。
        time.sleep(1)
        # 點擊一個xpath定位的元素
        self.driver.find_element_by_xpath("").click()
        time.sleep(1)
        # 給輸入id定位的輸入框傳值
        self.driver.find_element_by_accessibility_id("").set_value("iostest")
        time.sleep(1)
        # 截圖保存到當前文件
        self.driver.save_screenshot('./1.png')
        time.sleep(2)
        # 關閉app
        self.driver.close_app()


if __name__ == '__main__':
    a =Appium()
    a.test()
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末矛绘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子刃永,更是在濱河造成了極大的恐慌货矮,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斯够,死亡現(xiàn)場離奇詭異囚玫,居然都是意外死亡喧锦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門劫灶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裸违,“玉大人,你說我怎么就攤上這事本昏。” “怎么了枪汪?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵涌穆,是天一觀的道長。 經(jīng)常有香客問我雀久,道長宿稀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任赖捌,我火速辦了婚禮祝沸,結果婚禮上,老公的妹妹穿的比我還像新娘越庇。我一直安慰自己罩锐,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布卤唉。 她就那樣靜靜地躺著涩惑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪桑驱。 梳的紋絲不亂的頭發(fā)上竭恬,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音熬的,去河邊找鬼痊硕。 笑死,一個胖子當著我的面吹牛押框,可吹牛的內(nèi)容都是我干的岔绸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼强戴,長吁一口氣:“原來是場噩夢啊……” “哼亭螟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起骑歹,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤预烙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后道媚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扁掸,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡翘县,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谴分。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锈麸。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖牺蹄,靈堂內(nèi)的尸體忽然破棺而出忘伞,到底是詐尸還是另有隱情,我是刑警寧澤沙兰,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布氓奈,位于F島的核電站,受9級特大地震影響鼎天,放射性物質(zhì)發(fā)生泄漏舀奶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一斋射、第九天 我趴在偏房一處隱蔽的房頂上張望育勺。 院中可真熱鬧,春花似錦罗岖、人聲如沸涧至。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽化借。三九已至,卻和暖如春捡多,著一層夾襖步出監(jiān)牢的瞬間蓖康,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工垒手, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蒜焊,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓科贬,卻偏偏與公主長得像泳梆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子榜掌,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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