1. 程式人生 > >Appium環境的安裝與配置_Python版

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)