利用IPython來學習Appium

Appium簡介

Appium是目前很是流行的移動端自動化測試工具,它是一個開源、跨平臺的自動化測試工具,用於測試原生和輕量移動應用,支持 iOS, Android 和 FirefoxOS 平臺。同時它也支持python語言來編寫測試代碼,下面就介紹一下怎麼用IPython Shell來學習Appium。node

Appium測試環境

Appium環境搭建

首先是Appium的環境搭建,這部分請參考官網的文檔,若是有問題能夠上網搜索,能找到不少相關的教程。 完成搭建以後在終端中輸入下面命令來檢查環境是否正確。python

$ appium-doctor

輸出以下:android

info AppiumDoctor Appium Doctor v.1.4.1
info AppiumDoctor ### Diagnostic starting ###
info AppiumDoctor  ✔ The Node.js binary was found at: /usr/bin/node
info AppiumDoctor  ✔ Node version is 6.3.1
--略--
info AppiumDoctor Everything looks good, bye!
info AppiumDoctor

Android手機設置

準備一部android手機,個人使用的手機是Nexus 4,系統版本是5.1.1。 開啓手機的開發者模式,而後設置充電時不鎖定屏幕,這樣測試時會方便一點。 經過數據線將手機和電腦相鏈接,在手機上選擇容許USB調試。git

最後在終端輸入下面命令來檢查設備是否連接正常:web

$ adb devices

輸出以下:shell

List of devices attached
04c5a5af52197902	device

Appium服務啓動

環境搭建好以後,經過下面命令來啓動appium服務vim

$ appium -a 127.0.0.1 -p 4723  #啓動服務,而且指定ip和端口

能夠經過下面命令來查看具體的選項的說明和用法:api

$ appium --help

利用IPython學習Appium

第一個appium自動化python腳本

打開你最喜好的文本編輯器(例如:vim),輸入下面python代碼,並保存爲appium_deom.py文件。bash

#!/usr/bin/env python3
# coding=utf-8
from appium import webdriver

desired_caps = {}
desired_caps['platformName'] = 'Android' #設置操做平臺
desired_caps['platformVersion'] = '5.1.1' #操做系統版本
desired_caps['deviceName'] = 'Nexus 4' #設備名稱
# 設置要啓動的應用的包名,能夠經過UI automator Viewer工具查看
desired_caps['appPackage'] = 'com.android.calculator2' 
# 設置啓動應用的首頁信息,能夠經過adb logcat抓取到
desired_caps['appActivity'] = '.Calculator'
desired_caps['udid'] = '04c5a5af52197902' #設備ID,能夠經過adb devices命令查看
desired_caps['noReset'] = 'True' # 設置會話不會重置
desired_caps['unicodeKeyboard'] = 'True' #設置能夠輸入中文
desired_caps['resetKeyboard'] = 'True' #同上,設置中文輸入
#設置python shell命令行的超時時間,默認是60秒
desired_caps['newCommandTimeout'] = 6000 
print(desired_caps) #打印配置信息

#使用上面的配置,新建driver對象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
driver.implicitly_wait(10) #使用隱性等待10秒

注意: newCommandTimeout選項必定要設置的時間比較長,默認的60秒,若是在ipython中長時間不輸入語句的話,很容易出現會話自動結束問題。 另外,上面代碼中「appPackage」和「appActivity」必須設置,若是沒有設置會提示錯誤信息。app

IPython的基本使用能夠參考我以前寫的文章IPython基本介紹。 在終端中輸入命令啓動ipython而且運行腳本

$ ipython
Python 3.5.2+ (default, Nov  3 2016, 11:10:16) 
--略--
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.
In [1]: %run appium_deom.py    #運行上面寫好的腳本
{'appPackage': 'com.android.calculator2', 'platformName': 'Android', 
'resetKeyboard': 'True', 'unicodeKeyboard': 'True', 'udid': '04c5a5af52197902', 
'platformVersion': '5.1.1', 'noReset': 'True', 'newCommandTimeout': 6000,
 'deviceName': 'Nexus 4', 'appActivity': '.Calculator'}
In [2]:

經過%run 命令運行腳本成功後,腳本中的變量和函數等能夠直接在ipython中使用。

利用ipython探索appium api

Tab自動補齊

經過在ipython shell中輸入driver.後按[Tab 鍵]。即利用ipython的自動補齊功能能夠查看driver對象下有多少方法和屬性。

輸入圖片說明

也能夠輸入部分關鍵詞後自動補齊,補齊的方式和bash shell相似。例如輸入driver.find_element後按Tab鍵:

輸入圖片說明

help()函數查看幫助

還有能夠利用help函數來查看driver對象中的函數的使用方法,命令示例:

In [3]: help(driver.get_screenshot_as_file)

輸出以下:

Help on method get_screenshot_as_file in module selenium.webdriver.remote.webdriver:
get_screenshot_as_file(filename) method of appium.webdriver.webdriver.WebDriver instance
    Gets the screenshot of the current window. Returns False if there is
       any IOError, else returns True. Use full paths in your filename.
    :Args:
     - filename: The full path you wish to save your screenshot to.
    :Usage:
        driver.get_screenshot_as_file('/Screenshots/foo.png')

在ipython中執行python語句

如今能夠在ipython中一條一條的執行python代碼,能夠立刻在手機上看到效果,例如執行元素定位並點擊操做的語句:

In [9]: driver.find_element_by_id('com.android.calculator2:id/digit_7').click()  #找到按鈕「7」並點擊

若是沒有問題的話,你立刻就能夠在手機上看到appium的執行效果。 經過這種方法,你能夠進行實驗,或者試錯法。也能夠經過粘貼網上的代碼到ipython中運行,能夠立刻查看運行結果。

最後,執行下面語句來退出driver,結束本次測試。

In [10]: driver.quit()

小結

利用ipython不須要編寫完整的腳本後再運行和調試,能夠直接單條語句運行和調試,這樣就爲咱們節省了很多時間。我的認爲學習IT方面的知識,多動手實踐是很是好的學習方式。而ipython正好能幫助咱們快速方便的探索和實驗appium的使用方法。

相關文章
相關標籤/搜索