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() //添加这行