1. 程式人生 > >我的Appium學習記錄——Python IOS appium& selenium 自動化基礎操作

我的Appium學習記錄——Python IOS appium& selenium 自動化基礎操作

===========分割線===========

20180121更新,升級到了Appium Desktop 1.3.1,詳細更新內容見本文末,建議閱讀本文前先看最近更新的內容。

===========分割線===========

百度google了一輪,最大的感觸是:好多教程都不適用啊!要麼是Appium版本舊,要麼是iOS版本舊。想找一篇詳細的“從入門到放棄”的教程都沒有,之前搭Android環境的時候,能搜到很多十分詳實的教程,而iOS的就有點蛋疼了。
然而,坑還是要入的,所以,就從搭環境開始吧。

環境搭建

1. Xcode

必須承認,我是Mac OS新手,有Linux的基礎,用了幾天Mac OS,算是基本會用了……
本文的系統版本為Mac OS 10.12.5,由於陪測的iOS用的是10.3.2,所以Xcode必須要裝上新的8.3.2(不然沒有SDK),Xcode在App Store裡安裝就好了。

2. Appium

Appium向來有命令列版的和GUI版的——我選擇後者,到官網下載安裝最新的Appium Desktop 1.0.2的dmg,裡面帶了1.6.4的Appium。

3. Appium客戶端庫

Python、Ruby、Java、Javascript、PHP、C#等,任君選擇,去官網下載。
例如我用Python,就安裝Appium-Python-Client,在終端執行

12sudo easy_install pip# 系統自帶easy_installpip install Appium-Python-Client--user# 加上--user是因為Mac下有許可權的問題

4. Homebrew

Homebrew相當於Linux下的apt-get、yum,要用它來安裝node,在終端執行

12/usr/bin/ruby-e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"brew-v# 顯示版本,如Homebrew 1.2.1

5. node

12brew install nodenode-v# e.g. v7.10.0

6. appium-doctor相關

用來檢測Appium相關環境有沒有裝好的工具:

12345678npm install-gappium-doctor# 裝好之後 檢測一下iOS的環境有沒有配置好 如果不加--ios 則檢測Android和iOS
appium-doctor--ios# 它提示我缺少Xcode Command Line Tools和Carthage,那就補上xcode-select--installbrew install carthage

7. 還有一些庫

12brew install libimobiledevice--HEADnpm install-gios-deploy# for iOS 10+

8. WebDriverAgent相關(大坑

iOS 10+使用的是XCUITest,Appium使用的模組是appium-xcuitest-driver,其中引用了Facebook提供的WDA方案來驅動iOS的測試。
裝Appium Desktop的時候,它裡面帶了一個WebDriverAgent,但是這個自帶的是有問題的!會造成不能使用Inspector,卡了很久!從Facebook那裡自己clone一份才是王道:

12345678910cd~git clonehttps://github.com/facebook/WebDriverAgent.gitcdWebDriverAgentmkdir-pResources/WebDriverAgent.bundle./Scripts/bootstrap.sh# 開始下載並編譯 編譯不應該報錯cd/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/mvWebDriverAgent WebDriverAgent2# 把自帶的改名ln-s~/WebDriverAgent WebDriverAgent# 用facebook的原版替換回去

經過了baidu和google,用以上方法解決了不能Inspect的問題。

在使用Appium時,需要把WDA裝到真機上,然後又會遇到證書的問題,我也不是很明白,總之跟provisioning profile有關。

用Xcode開啟目錄下的WebDriverAgent.xcodeproj,對於WebDriverAgentLib 和 WebDriverAgentRunner,勾選“Automatically manage signing”,把Team改成公司的,Bundle Identifier改成公司的證書可以接受的名字,具體可以參考官方文件操作,不懂的找開發同學協助。


然後就可以把WebDriverAgentLib和WebDriverAgentRunner都編譯到真機執行一下了。正常來說,會在桌面生成一個沒圖示的WebDriverAgentRunner,點開之後不會有什麼反應,這就對了。

寫測試指令碼

1. Appium server capabilities

要讓App跑起來,還需要了解Appium server capabilities,它告訴Appium伺服器很多資訊,例如開哪個App、手機的系統/版本、在哪臺裝置上跑(真機還是模擬器等)等。

給出我用到的一些引數(in Python),其他capabilities請參考官方文件

123456789101112131415161718# -*- coding: utf-8 -*- fromtimeimportsleepfromappium importwebdriverdesired_caps={}desired_caps['automationName']='XCUITest'# Xcode8.2以上無UIAutomation,需使用XCUITestdesired_caps['platformName']='iOS'desired_caps['platformVersion']='10.3.2'desired_caps['deviceName']='iPhone 7 Plus'desired_caps['bundleId']='需要啟動的bundle id, 去問開發者'desired_caps['udid']='真機的udid 可在Xcode或iTunes裡檢視'desired_caps['newCommandTimeout']=3600# 1 hour# 開啟Appium伺服器,start server後,嘗試啟動被測Appdriver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)sleep(60)driver.quit()

如果能跑起來,就是正常的,不然看一下報什麼錯。

2. Inspector

能跑起來只是第一步,更重要的是如何定位元素。

Inspector的使用方法很簡單,之前執行driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’, desired_caps)之後,連線就已經建立好了,只需在瀏覽器進入http://localhost:8100/inspector即可,之後就可以使用熟悉的driver.find_element_by_xxx方法來定位元素啦。

後記

Selenium的坑

後來又遇到了一點坑,例如使用send_keys方法時,報

Message: Parameters were incorrect. We wanted {“required”:[“value”]} and you sent [“text”,”sessionId”,”id”,”value”]

錯誤,google了一下發現是selenium新版導致的問題,降級後解決:

12pip uninstall seleniumpip install selenium==3.3.1

手勢操作

由於XCUI的原因,之前的一些手勢操作如swipe、pinch、TouchAction等都不能用了,可以參考這篇官方文件,使用driver.execute_script方法代替。如

12driver.execute_script('mobile: scroll',{'direction':'down'})# 向下滾動driver.execute_script('mobile: dragFromToForDuration', {'duration':0,'fromX':374,'fromY':115,'toX':200,'toY':100})# 從右往左拖

對於直接用座標的,還要注意邏輯解析度的問題,如iPhone 7 Plus的邏輯解析度是414×736。

結語

剛接觸iOS的Appium,之後肯定還會遇到問題,會繼續更新本文。

更新:最近更新到了Appium Desktop 1.1,裡面帶了1.6.5的Appium,使用起來暫時未發現明顯區別。

20180121更新

相關推薦

Appium學習記錄——Python IOS appium& selenium 自動化基礎操作

===========分割線===========20180121更新,升級到了Appium Desktop 1.3.1,詳細更新內容見本文末,建議閱讀本文前先看最近更新的內容。===========分割線===========百度google了一輪,最大的感觸是:好多教程都

第019講:的地盤聽的 | 學習記錄(小甲魚零基礎入門學習Python

(標答出處: 魚C論壇) 《零基礎入門學習Python》 測試題: 0.下邊程式會輸入什麼? def next(): print('我在next()函式裡...') pre() def pre(): print('我在pre()函式裡...') n

一隻自動化測試小白的學習記錄——Python+Selenium中網頁視窗切換

 本次實驗在Python IDLE中進行操作 可以比較直觀地看到網頁切換的狀態(●ˇ∀ˇ●)1.首先,在百度中搜索“鏈家" ,並以find_element_by_link_text的方法開啟“鏈家”的官方網站首頁(OK,那麼現在已經有兩個網站頁面了,第一個是百度搜索的結果頁面

一隻自動化測試小白的學習記錄——Python+Selenium+pip+webdriver下載安裝 python自動化測試環境配置

軟體測試小白自學了幾天的自動化測試 簡單總結一下最近學的知識((●'◡'●))1.首先在電腦上安裝python 我安裝的是3.5.4 -64位 版本 配置環境變數附上鍊接:https://pan.baidu.com/s/1XkGzvHcocgzgEtSm7PogoA 密碼:v

一隻自動化測試小白的學習記錄——Python+Selenium+Sublime 運用API、元素定位、元素操作方法、滑鼠鍵盤事件實現入門Web自動化測試

題外話:之前做一些自動化測試的入門實驗都是用的Python的IDLE進行編寫的,正兒八經的好處(可以一行一行地執行,因此能夠直觀地看到對於網頁測試的每一步變化,也能夠明確地知道在哪一步出了錯),不知所云的壞處(沒有一下子執行指令碼程式的成就感?????(黑人嚴肅臉)) 。於是

一隻自動化測試小白的學習記錄——Python+Selenium基於Web的自動化測試(例項練習)

也有兩天沒更新了 哎~這學期的課還挺多的 都是利用課餘的一些時間來學習自動化測試(抱怨臉(╯▔皿▔)╯)這兩天我在練習的是一個相對完整的Web自動化測試,也是對前些日子學習內容的整合,具體來說如下:1.開啟瀏覽器2.輸入網址開啟網頁(我是以鏈家網為練習的,因為想到明年畢業後要

Python學習記錄——Ubuntu(三)文件操作

滿足 無法找到 提示 可執行 目錄 什麽 min 文件查找 復制 一.mkdir用於創建目錄:   mkdir 目錄名 #創建目錄   mkdir -p 目錄名1/目錄名2/目錄名3 #創建多層目錄 二.rm用於刪除文件(慎用,易引發程序崩潰): 1.參數 (1)rm

學習筆記-Python爬蟲7-Selenium + PhantomJS

index ocs java org pytho doc http sel sta # 動態HTML - JavaScript - jQuery - Ajax - DHTML - Python采集動態數據 - 從JavaScrip

現在學習Python小結

python 我覺得是我選擇的愛,大概是因為學校裡教了java,c++ Python 這門語言絕對不簡單,但是隻是pip之後import然後複製一些他人的程式碼段 是可以完成一些非常舒服和效率的功能,這個是python的魅力,但絕對不是這一點。 為了更好的學習和就業,我決定兼修java和linux,雖然

學習記錄170

2018.3.29李錦浩【連續第170天】今天學習了JavaScript中單體內建物件,即原來程式中就存有的物件。今天學習的是Global物件。URI編碼方法:首先是encodeURI()和encodeURIComponent()兩種方法,兩種方法都是對URI進行編碼,然後傳

學習記錄189

2018.4.17李錦浩【連續第189天】繼續學習關於Document類的知識。除了昨天講的屬性和方法,Document物件還有一些特殊的集合。這些集合都是HTMLCollection物件,為訪問文件常用部分提供了快捷方式。Document.anchers,包含文件中所有帶n

Java學習記錄(補充二:面對對象基礎復習,習題)

補充 實例化 ntc println stat 初始 sys order 成績 求3(可調整)個學員成績的和或平均分或兩者都具package day5; import java.util.Scanner; public class Score { //構造函數

基於python語言的Selenium自動化測試

log 轉換成 body odi 執行 con 行為 般的 按鈕 一、Selenium簡介 Selenium是一個web自動化應用測試工具,還支持所有的web的管理任務自動化。並且開源免費,也是一個web自動化輕量級框架。它支持多種瀏覽器、跨平臺、跨操作系統、支持多種編

Hadoop學習記錄(四、hadoop實現檔案操作

1.從Hadoop URL讀取資料 類似cat命令 public class URLCat { static{ URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); }

ES學習記錄2——ES核心概念和基本操作.md

2. Elasticsearch基本核心概念  Elasticsearch中具備一些基本的概念,做如下描述: Near Realtime(NRT):ES是幾乎是一個實時查詢平臺,從索引文件到可搜尋文件有一點延遲,通常是1秒; Cluster:叢集是一個或多個節

基於python語言的selenium自動化測試(2)-測試程式碼與指令碼程式碼分離

上一篇介紹瞭如何搭建selenium環境,也給出了一小段程式碼演示如何使用selenium 部落格不會過多的介紹如何使用selenium api 更多地在於如何構建一個自動化測試專案, 程式碼的分層是很關鍵一步,本文介紹如何使用pytest+selenium

基於python語言的selenium自動化測試(1)-環境搭建

近期在寫爬蟲軟體時遇到的一些問題需要使用到selenium工具,在測試領域也同樣需要學習該工具,所以大概記錄下學習這款工具的使用以及一些問題及思考 selenium 是一個web的自動化測試工具,不少學習功能自動化的同學開始首選selenium ,相因為它相比

python資料處理】pandas基礎操作

基礎操作 1.建立表 dataframe 類似於csv 與SQL表  方法1 import codecademylib import pandas as pd df1 = pd.DataFrame({ 'Product ID': [1, 2

Selenium WebDriver基礎操作教程

最近幾個月在研究Selenium WebDriver,簡單總結一下我的入坑記。 一、在Java 環境中的安裝 1.選取合適的瀏覽器   在配置Selenium的WebDriver前首先先選定測試的瀏覽器,IE、Chrome、Firefox等主流瀏覽

【Mac + Appium學習(四)】之常用的IOS自動化測試API總結 Selenium2+python自動化36-判斷元素存在 Appium+Python3+iOS定位元素

環境: Appium:1.9.1 Appium-desktop:1.7.1 Xcode:10.0 IOS:iPhone5S(10.3.3) Mac:10.13.6   ①獲取手機螢幕size:長、寬 《Appium Appium 1.9 版本 BUG:使用