appium自動化測試環境搭建

一、須要用到的軟件以下:

1.jdk8u73windowsi586(32位的就下載32位的,64位的就下載64位的)。java

2.android-sdk_r24.4.1-windows.zip(下載這個adt-bundle-windows-x86_64-20140702)node

3.Python:V3.7python

4.appium:1.4.16.1android

5.Node.js:node-v10.16.3-x64web

6.Appium-python-Clientshell

7.pycharmnpm

其中1-5是能夠先下載的,6則須要在完成前面的五個步驟後才進行windows

2.一、JDK

下載地址:略app

配置環境變量:ide

新建JAVA_HOME設置爲你的安裝路徑(C:\Program Files (x86)\Java\jdk1.8.0_73)

classpath值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

path值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;是有「.」這個符號的不能漏掉

配置完成後,進入cmd,輸入javac若是出來用法中文,說明配置正確。輸入java -version查看版本

2.二、SDK

下載地址:http://www.androiddevtools.cn/

1.解壓adt集成包到合適的路徑下面,好比D:\SDK

2.設置安卓環境變量

配置環境變量,

設置ANDROID_HOME系統變量爲你的android SDK路徑,並把tools和platform-tools兩個目錄加入到系統的Path路徑裏。

eg:添加變量名:ANDROID_HOME 變量值: D:\adt\sdk

並把這句添加到 %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools記得要加上";"

配置完環境後,能夠在運行cmd後輸入 adb(能看到當前版本號),再輸入android-h(tools目錄下的,若是出來一堆文字則是能夠的)

2.三、python

安裝完成後將D:\python和D:\python\Scripts,添加到環境變量path下

打開cmd輸入python,出現版本號,而後輸入print("helloworld!")這樣python就是安裝好了。

2.四、node.js

進入官網地址並下載:https://nodejs.org/en/download/

下載後一路傻瓜式安裝,安裝完成後,運行cmd,輸入node –v查看版本號,而後輸入npm 

2.五、appium服務端

下載地址:https://bitbucket.org/appium/appium.app/downloads/

完整安裝帶UI的appium,能夠從官網直接下載dmg(mac)或者zip(Windows),運行便可。

appium安裝好後:

找到這個文件安裝目錄D:\appium\node_modules\.bin

將上面的地址添加到環境變量path下。

打開cmd,輸入appium-doctor,檢查環境是否OK,出現allchecks were successful,說明環境OK。

2.六、Appium-Python-Client

進入cmd 輸入:pip install Appium-Python-Client。經過Python安裝等待安裝完成。

超時報錯時,再次輸入重試。

安裝 Appium-Python-Client 的同時會安裝一個selenium模塊.試着進入python3交互命令行,而後執行下面命令:

import selenium

selenium.__version__

2.七、安裝pycharm

三、測試用例編寫

3.一、appium鏈接模擬器或真機

模擬器:

一、建立一個AVD並啓動,android sdk中自帶AVD Manager

二、啓動appium 點擊右上角的啓動按鈕

 

啓動成功後

真機:

一、打開usb調試模式

二、使用手機鏈接電腦

在cmd中輸入adb devices查看是否鏈接成功
新手可能會出現兩個問題 ,一是輸入adb命令時提示不是內部命令或者外部命令

那麼你須要下載一個adb工具包並存放在C:\Windows\System32目錄下(必須強調:與sdk中的adb工具包版本一致!!!!

二是須要打開手機的usb調試模式並安裝好驅動

三、啓動appium服務
在cmd命令中輸入:appium

第三方模擬器:(本次以網易MuMu爲例)

一、鏈接到模擬器

打開cmd(若是使用MuMu自帶adb,則cd C:\Program Files (x86)\MuMu\emulator\nemu\vmonitor\bin\)

adb kill-server(MuMu自帶:adb_server.exe kill-server)

鏈接模擬器端口:adb connect 127.0.0.1:7555(MuMu自帶:adb_server.exe connect 127.0.0.1:7555)

列出已鏈接的設備:adb devices(MuMu自帶:adb_server.exe devices),正常會顯示MuMu的設備已鏈接,則能夠進行下一步的操做了

注意:若是設備列表裏沒有顯示127.0.0.1:7555設備,則可屢次嘗試adb kill-server和adb connect 127.0.0.1:7555鏈接

二、啓動Appium服務

3.二、找到被測APP的包名和Activity Name

使用adb devices命令確認鏈接正常

而後 打開被測APP,輸入下面的命令,就會顯示出APP的包名與ActivityName

本人最常使用第3條命令

     adb shell dumpsys window w | findstr \/ | findstr name=

或 adb shell dumpsys window |findstr mCurrent

或 adb shell "dumpsys window w|grep \/|grep name=|sed 's/mSurface=Surface(name=//g'|sed 's/)//g'|sed 's/ //g'"

3.三、啓動UI Automator Viewer(安卓SDK自帶的工具)

在SDK的安裝目錄下雙擊uiautomatorviewer.bat就能夠啓動,能夠查看APP頁面元素屬性,進而定位元素,實現各類操做

4個按鈕從左至右功能分別是:打開已經保存的佈局,獲取詳細布局,獲取簡潔佈局,保存佈局

# -*- coding:utf-8 -*-
from appium import webdriver
from time import sleep
import unittest
import selenium

class MyTestCase(unittest.TestCase):
    
    @classmethod
    def setUp(self):
        print('selenium version=',selenium.__version__)
        
        desired_caps ={
        'platformName':'Android',
        'deviceName':'127.0.0.1:7555',
        'platformVersion':'6.0.1',
        'appPackage':'com.baidu.yuedu',
        'appActivity':'com.baidu.yuedu.splash.SplashActivity',
        'unicodeKeyboard':True,#繞過手機鍵盤操做,unicodeKeyboard是使用unicode編碼方式發送字符串
        'resetKeyboard':True#繞過手機鍵盤操做,resetKeyboard是將鍵盤隱藏起來
        }
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

    def test_something(self):
        sleep(10)
        self.driver.find_element_by_name("分類").click()
        sleep(5)
        self.driver.find_element_by_name("文學藝術").click()
        sleep(5)
        self.driver.find_element_by_name("孤獨是一我的的清歡").click()
        sleep(5)
        
    @classmethod
    def tearDown(self):
        sleep(3)
        print("tearDown-------")
        self.driver.quit()
        
if __name__=="__main__":
    unittest.main()
MyTestCase
相關文章
相關標籤/搜索