Appium環境的安裝與配置_Python版
一、安裝Python
Appium Client是對webdriver原生api的一些擴充套件和封裝。它可以幫助我們更容易的寫出用例,寫出更好懂的用例。 Appium Client是配合原生的webdriver來使用的,因此二者必須配合使用缺一不可。在本文件的開始已經介紹Appium支援多種程式語言編寫自動化測試指令碼,由於我個人熟悉Python語言,所以選擇Python語言來編寫自動化測試指令碼。
訪問Python官方網站:https://www.Python.org/下載最新版本的Python2,截止作者發稿,最新版本為Python2.7.10版本。讀者根據自己的平臺選擇相應的版本進行下載;對於Windows使用者來說,如果你的系統是32位的請選擇x86版本,如果是64位系統請選擇64版本進行下載。下載完成會得到一個以.msi為字尾名的檔案,雙擊進行安裝。如圖2.1。
pip是一個安裝和管理Python包的工具,通過pip去安裝Python包將變得十分簡單,我們將省去了搜尋--查詢版本--下載--安裝等繁瑣的過程
推薦通過pip進行安裝“Appium-Python-Client”。
--------------------------------------------------------------------------------------
C:\package\setuptools-7.0>pipinstall Appium-Python-Client
--------------------------------------------------------------------------------------
二、安裝Android及appium
· 安裝jdk,安裝好後將jdk相關目錄加入環境變數,以我的為例:
將 C:\Program Files (x86)\Java\jdk1.6.0_45\bin 加入path 系統變數
將 C:\Program Files (x86)\Java\jdk1.6.0_45\lib 加入classpath 變數(沒有classpath的話自己新建)
· 下 載adt-bundle-windows-x86-20130522(版本可選)並解壓,這是個集成了android sdk 的整合開發環境,對於開發android程式很方便。我們的自動化測試主要用到的是其中整合的android sdk,但是為了方便閱讀相關程式碼,這個工具是比較好的一個選擇。也可以直接下載android sdk
解壓後的目錄為(以我為例):D:\adt-bundle-windows-x86-20130522
新增環境變數,將D:\adt-bundle-windows-x86-20130522\sdk\tools目錄以及D:\adt-bundle-windows-x86-20130522\sdk\platform-tools
新增至path系統變數
· 安裝node.js,去node.js官網下載msi格式的安裝檔案,下載後安裝
2) 把Node.js的安裝路徑(也就是node.exe檔案所在的目錄)新增到環境變數Path
· 安 裝appium。 node.js安裝成功後開啟命令列,輸入npm install –g appium 命令安裝appium,安裝完成後在命令列中輸入 appium-doctor 檢驗appium的執行環境是否正常,如果有錯誤,對照錯誤解決即可,下圖說明appium的android執行環境配置成功:
三、例項
1、啟動appium及連線Android機
#coding=utf-8
from appium import webdriver
import unittest,time
class CalTest(unittest.TestCase):
def setUp(self):
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.3'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['appPackage'] = 'com.android.calculator2'
desired_caps['appActivity'] = '.Calculator'
self.driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
def tearDown(self):
self.driver.quit()
def test_add_aa(self):
time.sleep(5)
self.driver.find_element_by_name("1").click()
self.driver.find_element_by_name("5").click()
self.driver.find_element_by_name("9").click()
self.driver.find_element_by_name("delete").click()
self.driver.find_element_by_name("9").click()
self.driver.find_element_by_name("5").click()
self.driver.find_element_by_name("+").click()
self.driver.find_element_by_name("6").click()
#self.driver.find_element_by_name(name).send_keys()
self.driver.find_element_by_name("=").click()
#ela =self.driver.find_element_by_android_uiautomator('newUiSelector().description("Animation")')
#self.assertIsNotNone(ela)
#els=self.driver.find_elements_by_android_uiautomator('new UiSelector().clickable(true)')
#self.assertIsInstance(els, list)
#el1=self.driver.find_element_by_accessibility_id('Animation')
#self.assertIsNotNone(el1)
el=self.driver.find_element_by_class_name("android.widget.EditText").text
#text=el.__getattribute__('text')
self.assertEqual("1601",el)
self.driver.lock(10)
els=self.driver.find_elements_by_class_name('android.widget.TextView')
self.driver.scroll(els[len(els)-1], els[0])
el =None
try:
el =self.driver.find_element_by_accessibility_id(0)
except Exception as e:
els =self.driver.find_elements_by_class_name(id)
self.driver.scroll(origin_el, destination_el)
if el is None:
el =self.driver.find_element_by_accessibility_id(id)
el.click()
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(CalTest)
unittest.TextTestRunner(verbosity=2).run(suite)