Appium是目前很是流行的移動端自動化測試工具,它是一個開源、跨平臺的自動化測試工具,用於測試原生和輕量移動應用,支持 iOS, Android 和 FirefoxOS 平臺。同時它也支持python語言來編寫測試代碼,下面就介紹一下怎麼用IPython Shell來學習Appium。node
首先是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手機,個人使用的手機是Nexus 4,系統版本是5.1.1。 開啓手機的開發者模式,而後設置充電時不鎖定屏幕,這樣測試時會方便一點。 經過數據線將手機和電腦相鏈接,在手機上選擇容許USB調試。git
最後在終端輸入下面命令來檢查設備是否連接正常:web
$ adb devices
輸出以下:shell
List of devices attached 04c5a5af52197902 device
環境搭建好以後,經過下面命令來啓動appium服務vim
$ appium -a 127.0.0.1 -p 4723 #啓動服務,而且指定ip和端口
能夠經過下面命令來查看具體的選項的說明和用法:api
$ appium --help
打開你最喜好的文本編輯器(例如: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 shell中輸入driver.後按[Tab 鍵]。即利用ipython的自動補齊功能能夠查看driver對象下有多少方法和屬性。
也能夠輸入部分關鍵詞後自動補齊,補齊的方式和bash shell相似。例如輸入driver.find_element後按Tab鍵:
還有能夠利用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代碼,能夠立刻在手機上看到效果,例如執行元素定位並點擊操做的語句:
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的使用方法。