appium+夜神+python3 環境配置


先感慨一下真的心累啊,踩了好多坑,斷斷續續四天終於把環境徹底搭建完了,由於之前看的網上的帖子都不是很全而且還帶坑,決定自己寫一篇綜述,作為筆記。

一,首先是安裝需要的環境:

需要用到的軟件:

1. jdk-8u121-window(32位的就下載32位的,64位的就下載64位的)。

2.Android-sdk_r24.3.4-windows(下載這個adt-bundle-windows-x86-20140624)

3.Python:(V3.6也可以)

4.Node.js:node-v4.4.7-x64

5. appium:1.4.13.1

6.Appium-python-Client

7.pycharm

其中1-5是可以先下載的,6則需要在完成前面的五個步驟后才進行,7為可選Ide工具

1.1 JDK

jdk版本很重要,自己其實就是版本有問題才踩了很多坑,如果遇到報錯帶java的建議降低版本為1.7 有奇效。

千萬不要按1.9 版本。其次一定要按照鏈接的方式陪 :

https://jingyan.baidu.com/article/d45ad148ba5ab169552b80d3.html

按快捷鍵win+r,在運行內輸入cmd,並輸入Java,回車,如果出來的是些用法中文,那說明這是正確的,在接下來輸入javac,回車,如果出現些用法中文,說明是環境變量配好了

1.2 下載SDK

下載這個adt-bundle-windows-x86-20140624(64位)

下載地址:
https://blog.csdn.net/gtkknd/article/details/39336825

安裝方法:

下載好后並進行解壓,然后開始配置三個變量:

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

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目錄下的,如果出來一堆文字則是可以的)

1.3 安裝python

 

進入官網或百度下載python下載好后安裝到所需安裝路徑,如在D盤中新建一個python文件夾,如d:\python34

 

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

 

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

1.4 安裝node.js

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

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

這里同樣注意版本 node-v4.4.7-x64

1.5 安裝appium服務端

node 版本不對建議直接卸載重新安裝

方法一:進入官網地址並下載

https://bitbucket.org/appium/appium.app/downloads/

完整安裝帶UI的appium,可以從官網直接下載dmg(mac)或者zip(Windows),運行里面的app即可。

appium安裝好后:

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

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

 

方法二:node.js包管理安裝

npm install -g appium

appium –v

npm install -g appium-doctor

appium-doctor

命令安裝的appium是控制台程序,沒有UI界面。可到github搜索appium的appiumDesktop項目中下載最新版本

但是由於GFW關系,此方法會在安裝過程中卡住或是直接報錯,解決辦法:掛VPN代理FQ;為了滿足國內開發人員的需要,淘寶npm鏡像cnpmjs.org可替代官方版本。打開輸入:

npm install -g appium --registry=https://registry.npm.taobao.org

 

方法三:百度pan

直接下載appium的GUI界面安裝包,下載地址:https://pan.baidu.com/s/1jGvAISu#list/path=%2F,Windows最新版本是AppiumForWindows_1.4.16.1.zip,MacOS最新版本是appium-1.5.3.dmg。筆者以windows為例,下載的AppiumForWindows_1.4.16.1.zip 進行解壓安裝,啟動appium,彈出錯誤提示框

 

很容易在網上查到錯誤原因,因為node.js需要.NETFramework框架的支持,所以在這里需要安裝net framework4.5。當.net framework 4.5安裝完成,再次啟動Appium,

打開appium

 

 

appium安裝好后:

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

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

 

Tips:檢查appium的所有需求環境

npm install -g appium-doctor

appium-doctor

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

1.6 appium-python-client

 

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

 

如果從官方的資源庫下載Appium-Python-Client失敗,請自行更換下載源重新下載。在命令行輸入"pip install Appium-Python-Client -ihttp://pypi.douban.com/simple"重試 

Tips:檢查selenium版本3.3.3

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

import selenium

selenium.__version__

 

如果你顯示的 selenium 版本是當前最新版本3.3.3的話,那么最好使用下面命令將版本裝成3.0.2,網傳某些Api的話會報錯。

pip3 install -I selenium==3.0.2

1.7 pycharm

 

安裝流程參考:http://www.jianshu.com/p/042324342bf4

 

需要激活可以購買正版或網上搜索激活碼。

 

二,實戰:

如果沒有遇到問題直接跳過1,2兩步,先打開夜神模擬器

1.夜神模擬器配置

>配置系統環境:在Path中添加C:\Programfile\Nox\bin; (夜神模擬器安裝的bin目錄)

然后進入這個目錄下,啟動cmd,輸入nox_adb.exe connect 127.0.0.1:62001(為了adb連接模擬器),可能會出現以下的情況,那就是因為你的adb版本和模擬器中的adb版本不同,而且環境變量配置有問題,所以保證環境變量按照上邊寫的配置好以后,看下邊圖1和圖2

 
圖1
 
圖2

>驗證問題描述情況:(驗證之前需要先配置環境變量,將SDK下的adb所在目錄(D:\Program Files\Android\adt-bundle-windows-x86\sdk\platform-tools)、以及夜神模擬器的adb所在目錄(D:\Program Files (x86)\nox\bin)加入了系統的環境變量path中)

 
圖3

>解決辦法:

a、關掉夜神模擬器。同時去任務管理器里看下,adb.exe以及nox_adb.exe這2個進程有沒有在運行?有的話就結束掉。

b、找到SDK的目錄和夜神模擬器的目錄,將SDK目錄下的adb.exe文件,復制到夜神模擬器的目錄下,因為夜神模擬器目錄下原本的adb文件名字叫做nox_adb.exe,因此復制過去之后也得改名為nox_adb.exe。

再次進入這個目錄下,啟動cmd,輸入  nox_adb.exe connect 127.0.0.1:62001,再繼續,輸入adb devices,看看是不是連接成功了?

 
圖3
 
 
2.解決adb version 不兼容問題

遇到問題:
目前運行服務器端的adb版本(也就是夜神模擬器的adb版本)比客戶端的版本(也就是SDK目錄下的adb版本)低。

報錯信息如下:
adb server version(31) doesn’t match this client (36);killing…

解決辦法:
a、關掉夜神模擬器。同時去任務管理器里看下,adb.exe以及nox_adb.exe這2個進程有沒有在運行?有的話就結束掉。
b、找到SDK的目錄和夜神模擬器的目錄,將SDK目錄(C:\Program Files (x86)\Android\android-sdk\platform-tools)下的adb.exe文件,復制到夜神模擬器的目錄(C:\Program Files (x86)\Nox\bin)下,將夜神模擬器目錄下原本的adb.exe和nox_adb.exe修改文件名為adb_bak.exe和nox_adb_bak.exe,將從SDK目錄復制過來的adb.exe放在夜神目錄下,同時復制一份改名為nox_adb.exe。

3.啟動夜神模擬器

打開cmd命令行,進入夜神安裝目錄,執行如下命令:

cd D:\Program Files (x86)\nox\bin
nox_adb.exe connect 127.0.0.1:62001

nox_adb是第二步修改的,沒有第二步可以直接執行adb.exe connect 127.0.0.1:62001

在cmd命令行中,輸入:adb devices查看
存在:127.0.0.1:62001 device
即為成功!

adb devices

4.安裝測試app
將測試app.apk安裝包拖到夜神模擬器即可安裝測試app。

5.運行與使用Appium
安裝完成桌面會生成一個紫色的appium 圖標,雙擊打開。

6.編寫appium自動化測試腳本

6.1.首先打開pycharm並寫好代碼,這里以淘寶APK作為測試Demo,淘寶APK我是放在電腦桌面(或者放置同代碼同個目錄下)。如下所示

 
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

desired_caps = {}
desired_caps['platformName'] = "Android"         # 聲明是ios還是Android系統
desired_caps['platformVersion'] = '4.4.2'        # Android內核版本號,可以在夜神模擬器設置中查看
desired_caps['deviceName'] = '127.0.0.1:62001'   # 連接的設備名稱
desired_caps['appPackage'] = 'com.ss.android.ugc.aweme'    # apk的包名
desired_caps['appActivity'] = 'com.ss.android.ugc.aweme.splash.SplashActivity'  # apk的launcherActivity
# desired_caps['appWaitActivity'] = 'com.ss.android.ugc.aweme.splash.SplashActivity'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)          # 建立 session

time.sleep(5)
print('+++++++')
# 通過xpyth定位:find_element_by_xpath(“//android.widget.TextView[10]”) xpath下標從1開始,使用完整的classname
# 通過text name:find_element_by_name(name對應uiautomator掃描后text的內容)
# 通過id:find_element_by_id(id對應resource-id)
# 通過classname定位:find_element_by_class_name(class_name對應class)
# 通過accessibility id:find_element_by_accessibility_id(accessibility_id對應content-desc)
# 定位到某個文本框,並輸入內容:
# driver.find_element_by_id(“xxxxx”) .send_keys(“123456”)
# 滑動屏幕:
# 獲取屏幕尺寸 width=self.driver.get_window_size()[‘width’] height=self.driver.get_window_size()[‘height’]
# 滑動屏幕 driver.swipe(width*9/10, height*1/2, width*1/10, height*1/2, 1000)

# driver.find_element_by_id("************").click()         # 點擊元素
#
# driver.find_element_by_xpath("************").click()      # 點擊元素
#
# driver.find_element_by_xpath("************").send_keys(u'123456')   # 發送鍵值

driver.quit()      # 退出 session

其中查詢apk

 https://blog.csdn.net/hhy_123963/article/details/77750534

其中|:driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)     #這個地址是怎么來的呢?,見appium設置項,如下圖所示

 
連接地址

6.2.打開appium並點擊右上角三角符號,如下圖所示

 

6.3.運行pycharm代碼,並查看結果,如下圖所示(其實不會出錯,圖是網上找的):

 
運行結果

遇到的坑1:在CMD指令中輸入appium,提示如下圖所示

 
 
 解決方式:降低nodejs的版本

遇到的坑2:運行appium提示error: Couldn't start Appium REST http interface listener. Requested port is already in use. Please make sure there's no other instance of Appium running already.

解決方式:因為端口被node占用,可以用如下退出node,找出PID命令::netstat -ano|findstr "7922"   (這個4723是被占用的端口,我們需要先找該占用該端口程序的PID)。停止PID命令:taskkill  /pid[進程碼] -t(結束該進程) -f(強制結束該進程以及所有子進程)。

坑3

https://blog.csdn.net/qq_14913483/article/details/81141314
這個方法要放到類的后面
三.綜述

官網:
https://github.com/appium/python-client

appium日志解析:
https://blog.csdn.net/qq_24126893/article/details/80314776

參考的網址:

https://blog.csdn.net/qq_16206535/article/details/79586818

https://www.jianshu.com/p/50eb9a88f4e2

https://blog.csdn.net/jixiangrurui/article/details/79140756#1%E5%90%AF%E5%8A%A8%E5%A4%9C%E7%A5%9E%E6%A8%A1%E6%8B%9F%E5%99%A8

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM