日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python手机端编程环境_移动端自动化测试解决方案(Appium + Python) - (1) 环境搭建...

發布時間:2025/3/15 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python手机端编程环境_移动端自动化测试解决方案(Appium + Python) - (1) 环境搭建... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近對iOS自動化測試做了一番探究,希望通過自動化測試更好的去提高公司項目的測試效率 。在網上找了很多的文章和相關資料,都因為時間比較久導致無法實現基本環境的搭建,我在這兒分享給大家分享我的實現過程。

首先是iOS自動化實現方案。有兩篇文章值得你去讀一讀。

美團--客戶端自動化測試研究

我簡單的對第一篇文章中的內容做一下總結。一個高質量的App不僅僅需要代碼規范和邏輯嚴謹,還需要通過測試去對App的質量進行考核。從分層測試的角度來說,我們的測試你首先是單元測試,然后是接口級測試,最后是UI的測試。文章中列舉了安卓和iOS一些常用的測試框架,iOS端常用的XCTest(系統自帶用于單元測試的框架)、KIF(Keep It Functional,一款iOS app功能性測試框架)、Kiwi(BDD框架,是對XCTest的一個完整替代)都進行了簡單的介紹。

解釋一下BDD和TDD:

行為驅動開發(英語:Behavior-driven development,縮寫BDD)是一種敏捷軟件開發的技術,BDD的重點是通過與利益相關者的討論取得對預期的軟件行為的清醒認識。它通過用自然語言書寫非程序員可讀的測試用例擴展了測試驅動開發方法。

測試驅動開發(英語:Test-driven development,縮寫為TDD)是一種軟件開發過程中的應用方法,由極限編程中倡導,以其倡導先寫測試程序,然后編碼實現其功能得名。測試驅動開發是戴兩頂帽子思考的開發方式:先戴上實現功能的帽子,在測試的輔助下,快速實現其功能;再戴上重構的帽子,在測試的保護下,通過去除冗余的代碼,提高代碼質量。測試驅動著整個開發過程:首先,驅動代碼的設計和功能的實現;其后,驅動代碼的再設計和重構。

如果你的項目對UI自動化測試要求度不高的話,僅僅是需要單元測試和UI測試那么這里提出兩套方案:

方案一:xcode自帶兩個target,XCTest和XCUITest。前者是單元測試后者是UI測試。

方案二:Kiwi+KIF。前者可以進行單元測試,后者則可以進行UI測試。

Tip:Kiwi和KIF的環境搭建親測是沒問題的。有issue可以底部留言。

在了解了iOS可用的測試相關工具之后,結合第二篇美團技術團隊分享的文章,我們延用其給出的實現項目UI自動化測試方案:Appium + cucumber。下面簡單介紹一下兩個平臺:

Appium是一個開源的自動化測試工具,支持多種腳本語言,不依賴源碼。由于蘋果刪除了自動化測試框架UIAutomation, Appium改為使用XCUITest框架,使用Facebook的WebDriverAgent驅動。

cucumber是使用文本描述語言來執行測試用例的工具,使用Gherkin語法,文件以.feature做為后綴。

Appium + cucumber的方案具有以下優勢:

Appium底層以webDriverAgent為驅動,跨平臺性較高。

Appium對webView的支持性更好。

Appium元素定位手段更多。

Appium對安卓和iOS的接入成本較低,安卓提供apk文件,iOS提供.app文件。

接下來,我將正式開始說明對Appium和WebDriverAgent的集成,首先是Appium。

前置條件:

mac

xcode

目前本人運行成功的各工具對應版本,貼給大家參考:

appium v1.15.1

xcode 11.2

iphone6 iOS12.4

ruby 2.6.3

python 3.8.0

下載步驟:

環境配置

注意,下列步驟如果提示你沒有權限,記得在命令前面加 sudo。

命令行安裝homebrew.

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

安裝完畢后執行brew -v查詢安裝的版本號,我這里是Homebrew 2.1.16

安裝libimobiledevice

brew install libimobiledevice --HEAD

如果你遇到下面的問題Requested 'libusbmuxd >= 1.1.0' but version of libusbmuxd is 1.0.10

那么你需要進行下列的步驟進行更新升級操作:

brew update

brew uninstall --ignore-dependencies libimobiledevice

brew uninstall --ignore-dependencies usbmuxd

brew install --HEAD usbmuxd

brew unlink usbmuxd

brew link usbmuxd

安裝carthage

brew install carthage

安裝node

brew install node

安裝npm

brew install npm

安裝ios-deploy

npm install -g ios-deploy

如果你遇到下面的錯誤:

ld: framework not found MobileDevice

clang: error: linker command failed with exit code 1 (use -v to see invocation)

** BUILD FAILED **

錯誤原因是:xcode的自帶的DerivedData和要求的不一致,需要更新,請嘗試使用下列語句:

\rm -fr ~/Library/Developer/Xcode/DerivedData/ios-deploy-*

npm -g uninstall ios-deploy

npm -g install ios-deploy@beta

先移除DerivedData里的緩存,然后卸載重裝。

安裝xcpretty

gem install xcpretty

安裝appium-doctor

npm install -g appium-doctor

使用appium-doctor 檢查Appium iOS環境環境

appium-doctor --ios

這里給到我的控制臺完整打印信息:

info AppiumDoctor Appium Doctor v.1.12.1

info AppiumDoctor ### Diagnostic for necessary dependencies starting ###

info AppiumDoctor ? The Node.js binary was found at: /usr/local/bin/node

info AppiumDoctor ? Node version is 12.13.0

info AppiumDoctor ? Xcode is installed at: /Applications/Xcode.app/Contents/Developer

info AppiumDoctor ? Xcode Command Line Tools are installed in:

/Applications/Xcode.app/Contents/Developer

info AppiumDoctor ? DevToolsSecurity is enabled.

info AppiumDoctor ? The Authorization DB is set up properly.

info AppiumDoctor ? Carthage was found at: /usr/local/bin/carthage. Installed version is:

0.34.0

info AppiumDoctor ? HOME is set to: /Users/jackie-pc

info AppiumDoctor ### Diagnostic for necessary dependencies completed, no fix needed.

###

info AppiumDoctor

info AppiumDoctor ### Diagnostic for optional dependencies starting ###

WARN AppiumDoctor ? opencv4nodejs cannot be found.

WARN AppiumDoctor ? ffmpeg cannot be found

WARN AppiumDoctor ? mjpeg-consumer cannot be found.

WARN AppiumDoctor ? idb is not installed

info AppiumDoctor ? applesimutils is installed at: /usr/local/bin/applesimutils. Installed

versions are: applesimutils 0.7.6

info AppiumDoctor ### Diagnostic for optional dependencies completed, 4 fixes possible.

###

info AppiumDoctor

info AppiumDoctor ### Optional Manual Fixes ###

info AppiumDoctor The configuration can install optionally. Please do the following

manually:

WARN AppiumDoctor ? Why opencv4nodejs is needed and how to install it:

https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/image-

comparison.md

WARN AppiumDoctor ? ffmpeg is needed to record screen features. Please read

https://www.ffmpeg.org/ to install it

WARN AppiumDoctor ? mjpeg-consumer module is required to use MJPEG-over-HTTP

features. Please install it with 'npm i -g mjpeg-consumer'.

WARN AppiumDoctor ? Why idb is needed and how to install it:

https://github.com/appium/appium-idb

其中的警告不用管,我這里配置了Xcode Command,如果你需要配置的話,則需要打開你的Xcode,來到偏好設置->location的位置設置command line tools

xcode command配置.png

Appium底層是由WebDriverAgent驅動的,WebDriverAgent是由Facebook開發的一套開源框架,用于端對端的UI測試,能同時支持模擬器和真機。但是2018年已經停止維護了,所以Appium現在是自己在對WebDriverAgent進行維護。所以,當你下載Appium后其內置的WebDriverAgent地址發生了變化。接下來我們將開始搭建非常重要的一個玩意兒WebDriverAgent,大家做好戰斗準備。

具體操作步驟如下:以真機為例,模擬器不需要添加開發者賬號

先去到這一級目錄然后里面有一個appium-webdriveragent工程,進入其根目錄,執行初始化腳本添加相關的庫

/Applications/Appium.app/Contents/Resources/app/node_modules

sh ./Scripts/bootstrap.sh

修改工程targets下WebDriverAgentLib和WebDriverAgentRunner的bundleID,添加開發者賬號。

修改Lib工程的bundleID.png

Lib工程添加開發者賬號.png

修改Runner的bundleID.png

runner工程添加開發者賬號.png

工程選中Runner.png

當你完成了上述的幾步操作之后,鏈接你的手機,執行command + U。

Tips:

這里如果你去到上述的路徑下,發現你的工程的targets沒有我貼的圖片那么多時或者按照給的操作步驟cmd + u沒有通過編譯,并且報RunnerHttp文件找不到這個錯誤時,怎么辦?

首先檢查是否有執行腳本命令,還是不行則說明你的WebDriverAgent工程可能不是最新的,你需要去下載由Appium自己維護的WebDriverAgent。

如何檢驗你的webDriverAgent確實真機運行成功了呢?

當你運行成功,xcode控制臺會輸出一條http地址,將其用瀏覽器加載后會返回一段json數據。因為Appium本身就是通過發送json數據和你的app進行通信的,能返回json數據說明你的WebDriverAgent運行成功了,可以支持真機,然后你的手機上應該會出現一個WebDriverAgent的工程。

至此,Appium和WebDriverAgent的搭建算是完成了,應該會松一口氣。接下來輕松一下,可以把Appium跑起來玩玩,步驟是:

先把WebDriverAgentRunner編譯在手機上,再把待測試的工程運行在手機上。

啟動Appium,點擊start sever v1.15.1,點擊放大鏡(start inspector session),配置測試相關信息。有兩種方式:Desired Capabilities和JSON Representation,任選一種進行配置。下面是Appium真機配置界面:

appium啟動配置.png

這里的配置作用是讓Appium知道是哪臺手機運行哪個App,我貼出JSON Representation的代碼:

{

"bundleId": "",

"platformName": "iOS",

"platformVersion": "12.4",

"deviceName": "iPhone 6",

"automationName": "XCUITest",

"clearSystemFiles": "True",

"udid": ""

}

這里如果你是測試人員,上述相關信息請找開發要,然后手機信息從手機的通用- 關于本機里面找即可。配置好后點擊start session進行相關操作。下面我貼出start session后的界面和相關按鈕作用:

運行appium.png

在搭建好Appium的環境后,我們需要用一種腳本語言編寫自動化測試腳本,這里我們選擇python語言。關于使用Python同樣地也需要搭建環境,那么接下來安裝python3環境。

安裝步驟:

安裝方式一:官網下載安裝包進行安裝

去到python官網下載最新版本的python安裝包,建議使用3.6以上版本。

安裝方式二:命令行通過包管理工具homeBrew進行安裝

查看python版本

brew search python3

安裝python3

brew install python3

安裝成功后查看安裝的Python版本

python3 --version

值得注意的一點是,mac系統自帶了一個Python的2.7的版本,我們如果安裝Python3之后為了方便我們最好是把當前的Python運行環境指向Python3。所以,指向Python3的步驟是:

修改 .bash_profile文件。cmd + shift + G前往文件夾,輸入

~/.bash_profile

打開.bash_profile文件進行編輯,添加

# Setting PATH for Python 3.7

# The orginal version is saved in .bash_profile.pysave

PATH="/Library/Frameworks/Python.framework/Versions/(填指向的版本號)/bin:${PATH}"

export PATH

//增加這幾行內容(如果不是通過brew,而是通過官網下載安裝,這里會默認已經添加了,就退出不用修改了)

同樣的操作去到bashrc文件,進行編輯。

alias python2='/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7'

alias python3='/Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8'

alias python=python3

//添加以上三行 , 如果不知道自己的python3安裝路徑,可以用 which python3 命令進行查看路徑

使得修改的 bash_profile文件 和 bashrc文件生效

命令行分別執行:

source ~/.bash_profile

source ~/.bashrc

最后查看當前python版本

python -V

這里如果操作成功會看到顯示的是你安裝的最新的Python版本。

Tips:

簡單解釋下什么是homebrew。

Homebrew是一款Mac OS平臺下的軟件包管理工具,擁有安裝、卸載、更新、查看、搜索等很多實用的功能。簡單的一條指令,就可以實現包管理,而不用你關心各種依賴和文件路徑的情況,十分方便快捷。

援引官方的一句話:又提示缺少套件啦?別擔心,Homebrew 隨時守候。Homebrew —— OS X 不可或缺的套件管理器。

什么是Carthage

Carthage與CocoaPods類似,都是用于在iOS/OS X環境下管理第三方的工具。Carthage 使用于 Swift 語言編寫,只支持動態框架,只支持 iOS8+的Cocoa依賴管理工具。

總結

以上是生活随笔為你收集整理的python手机端编程环境_移动端自动化测试解决方案(Appium + Python) - (1) 环境搭建...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。