Appium python自動化測試系列之Capability介紹(五)

來源:互聯網
上載者:User

標籤:form   一個   裝置   _id   完成   ble   tac   enter   系統版本   

?5.1 Capability介紹5.1.1 什麼是Capability

在講capability之前大家是否還記得在講log時給大家看過的啟動時的日誌?在我們的整個開機記錄中會出現一些配置資訊,其實那些資訊就是capability攜帶的配置資訊,如果我們通過代碼來啟動我們能夠看見的配置資訊如下:

PATH = lambda p: os.path.abspath(os.path.join(os.path.dirname(__file__), p))capabilities = {}capabilities[‘platformName‘] = ‘Android‘ #設定平台capabilities[‘platformVersion‘] = ‘4.1‘ #系統版本capabilities[‘deviceName‘] = ‘127.0.0.1:62001‘ #裝置idcapabilities[‘autoLaunch‘] = ‘true‘ #是否自動啟動capabilities[‘app‘] = PATH(‘../apps/mukewang.apk‘ )#安裝包路徑,放在該py檔案的目錄下)capabilities[‘appPackage‘] = ‘cn.com.open.mooc‘ #包名capabilities[‘appActivity‘] = ‘cn.com.open.mooc.aindex.splash.MCSplashActivity‘ #啟動的activityself.driver = webdriver.Remote(‘http://localhost:4723/wd/hub‘, capabilities)

  

通過上面的配置資訊大家可以看出,在python裡面我們所講的capability其實就是一個字典(我們這裡暫且這麼說,因為每個語言叫法不一樣)。

5.1.2 Capability的作用

我們知道Capability是一個字典之後我們是否需要知道他的作用呢?我們在appium中配置app後我們能夠通過log看出裡面的資訊都是啟動的一些必要配置,通過上面的配置資訊我麼也能夠看出capability配置的就是我們做自動化的一些必要資訊。他主要是告訴server我們本次測試是瀏覽器還是app,是ios還是android以及android的版本資訊等。如果capability不告訴server,那麼server就不認識你,也就無法完成我們的自動化測試。

5.2 常用Capability配置講解5.2.1 公用Capability

如果有瞭解過Capability的人會發現一個問題,其實他主要分成了三部分:公用部分、ios部分、android部分,如果你android想用ios的那是不可能的,so,老老實實去瞭解每個平台有哪些,他們的作用是什麼。下面我們介紹一些公用常用的

在自動化測試過程中這些公用的Capability用的時間比較多,大家需要記住,去熟悉他的用法。

5.2.2 Android專屬Capability

在自動化測試過程中如果你只知道常用的一些參數配置,這個是遠遠達不到要求,因為你不知道什麼時候有什麼樣的突發情況發生,所以你需要瞭解appium所有最常用的配置參數,當然你可以掌握所有,那樣更好,熟能生巧。下面我們看一下android的Capability。

上面的只是一些簡單的列子,主要的功能是告訴大家,這些是我們經常用的,如果遇見類似的需求那麼可以直接使用,也希望大家看到這裡的時候自己動手去操作一下,看他執行的結果到底是怎麼樣。只有這樣你才能算掌握,只是看一遍還是不行的。

5.2.3 ios專屬Capability

在我選擇appium時,最主要是因為他能夠同時支援ios和android,在基礎參數配置中ios也有他自己的獨一份,不和android一樣,下面我們大概介紹一下:

BoundleId:這個是必須的,如果不配置就無法啟動ios app,這個是該app的唯一標示。eg:caps.setCapability("boundleId","ios.mooc.test"),這個只是一個簡單的例子。

autoAcceptAlerts: 這個在我們實際項目中非常實用,他就想web端的一個js彈窗,預設情況下是false,如果你的app中有類似情況建議開啟。eg:caps.setCapability("autoAcceptAlerts","true")

5.3 Capability實戰

當我們知道基礎的Capability 如何使用時,大家是否覺得現在我們已經就可以原原本本的照著去執行了呢?其實沒錯,是可以照樣去執行。但是你有思考過一個問題嗎?如果你的app變化了?你的package變化了?你的手機變化了?你的版本變化了等等你怎麼去實現?你是不是還需要到程式裡面來更改代碼?low嗎?要想不low我們接著往下看。

 1 def testCase(platformName,platformVersion,deviceName,app,appPackage,appActivity,port): 2   PATH = lambda p: os.path.abspath(os.path.join(os.path.dirname(__file__), p)) 3   desired_caps = {} 4   desired_caps[‘platformName‘] = platformName #設定平台 5   desired_caps[‘platformVersion‘] = platformVersion #系統版本 6   desired_caps[‘deviceName‘] = deviceName #裝置id 7   desired_caps[‘autoLaunch‘] = ‘true‘ #是否自動啟動 8   desired_caps[‘app‘] = PATH(app)#安裝包路徑,放在該py檔案的目錄下) 9   desired_caps[‘appPackage‘] = appPackage #包名10   desired_caps[‘appActivity‘] = appActivity #啟動的activity11   self.driver = webdriver.Remote(‘http://localhost:%s/wd/hub‘, desired_caps) % port

 

從上面的代碼我們可以和之前的代碼進行比較,大家是否發現了一些不同之處。在做自動化時我們一定要保持資料的靈活性,所以在這裡我們做了一些小小的改變,我們將所有的資料都改變成了變數,變數從何而來這個我們後面會講,這個會去讀取設定檔。現在從代碼層面來看是否要比之前的代碼更有可讀性呢?其實現實中並不是這樣,有更進階的版本,這個後面講。

在代碼的第11行大家注意一個問題沒有,在一個字串中間我使用了一個%s,這個在python裡面代表的意思是取一個變數,這個變數是我後面跟著的 port 這個變數的值,這裡唯一的有問題就是這裡。

Appium python自動化測試系列之Capability介紹(五)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.