Eclipse和Python環境搭建完后,依次安裝如下必備品
1、安裝jdk,配置環境變量:
變量名:JAVA_HOME
變量值:C:\Program Files\Java\jdk1.7.0
變量名:CLASSPATH
變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
2、安裝python及selenium和Appium-Python-Client庫
3、安裝node.js,安裝完后使用node -v驗證
4、配置android環境變量:
1>設置 ANDROID_HOME 系統變量為你的 Android SDK 路徑。
F:\環境搭建\eclipse+python3.4+selenium+appium\adt-bundle-windows-x86-20140702\sdk
2>把 tools 和 platform-tools 兩個目錄加入到系統的 Path 路徑里。
F:\環境搭建\eclipse+python3.4+selenium+appium\adt-bundle-windows-x86-20140702\sdk\platform-tools
F:\環境搭建\eclipse+python3.4+selenium+appium\adt-bundle-windows-x86-20140702\sdk\tools
4、安裝appium客戶端
5、配置appium環境變量:
1> 把node_modules的bin目錄放到系統的Path路徑里。
C:\Program Files (x86)\Appium\node_modules\.bin
6、安裝完后使用appium-doctor驗證,成功結果如下:
7、打開appium,設置如下:
Device Name可在關於手機中查看,用USB連接手機后在開發者選項開啟USB調試
8、用安卓sdk\tools下自帶的uiautomatorviewer工具定位元素
9、安卓移動端QQ登錄自動化測試代碼如下:
#-*- coding: UTF-8 -*-
import os
import time
import unittest
# from selenium import webdriver
from appium import webdriver
desired_caps={}
desired_caps['platformName']='Android'
desired_caps['version']='8.0.0'
desired_caps['deviceName']='FRD-AL10'#這是測試機的型號,可以查看手機的關於本機選項獲得
# desired_caps['app'] = PATH('D:\\qq.apk')#被測試的App在電腦上的位置
desired_caps['appPackage'] = 'com.tencent.mobileqq'
desired_caps['appActivity'] = 'com.tencent.mobileqq.activity.SplashActivity'
driver=webdriver.Remote('http://127.0.0.1:4725/wd/hub',desired_caps)
time.sleep(10)
driver.find_element_by_name('登 錄').click()
name = driver.find_element_by_name('QQ號/手機號/郵箱')
name.send_keys('254901517')
psd = driver.find_element_by_id('password')
psd.click()
psd.send_keys("12345678")
blogin=driver.find_element_by_id('login')
blogin.click()
time.sleep(10)
10、獲取appPackage和appActivity可參考https://blog.csdn.net/xl_lx/article/details/78717917
運行腳本可能會出現這樣的錯誤:selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Original error: Could not extract PIDs from ps output. PIDS: [], Procs: ["bad pid 'uiautomator'"])
解決方法:
修改 Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js 文件
this.shell("ps '" + name + "'", function (err, stdout) { ... var procs = []; var outlines = stdout.split("\n"); outlines.shift() //添加這行