1、需要下载的软件
(1)首先下载node.js(appium server由Node.js编写,相当解释器)
(2)下载JDK
(3)安装SDK(adb,安卓调试桥)
(4)安装Appium桌面版本
(5)模拟器
2、node.js下载安装
https://nodejs.org/zh-cn/
下载后下一步安装,cmd下输入node -v检查是否安装成功
3、JDK下载安装
(1)下载地址:https://www.oracle.com/java/technologies/javase-downloads.html
选择相应的版本下载。
(2)安装一路下一步,修改默认的安装路径后配置环境变量时要注意
(3)环境变量配置
- 新建系统变量,变量名:JAVA_HOME 变量值:JDK的安装路径
- 找到Path变量名编辑–>新建/3/
- 依次新增:%JAVA_HOME%\bin %JAVA_HOME%\lib\tools.jar %JAVA_HOME%\jre\bin
- 在cmd下输入java和javac,如下图所示表示安装成功
4、SDK下载安装
(1)下载地址:https://www.androiddevtools.cn/
(2)安装
选择安装到系统下 :install for anyone using this computer
一路下一步
选择打勾前三项
如果步骤三中没自动打开或者不小心关闭,点击安装目录下的SDK Mansger.exe文件,同样可以打开,已经自动打开的忽略此步。
此图中打勾选项为必须安装的,
需要Accept License,才能点击安装
安装成功后的目录
(3)环境变量配置
新建变量ANDROID_HOME,值为android-sdk的安装位置
在path变量中新建值,%ANDROID_HOME%\tools、%ANDROID_HOME%\platform-tools
在cmd下输入adb devices验证是否安装成功
5、Appium安装
(1)下载
下载地址:http://appium.io/ | https://github.com/appium/appium-desktop/releases/tag/v1.19.1
6、Demo
启动模拟器,安装头条app
adb连接设备,adb connect host:port(夜神模拟器默认端口62001)
adb devices检查设备是否连接成功
adb命令查看包名和activity名(查看应用的包名:adb shell pm list packages,查看activity:输入命令adb logcat -c > d:\logs.log,启动app)
在日志中查找activity. 找到 com.ss.android.article.lite.activity.SplashActivity
启动appium服务,不需要修改host和port
pycharm启动脚本程序(控制头条app启动)
脚本如下
from appium import webdriver
from time import sleep
desired_caps = {}
desired_caps[‘platformName’] = ‘Android’
desired_caps[‘platformVersion’] = ‘7.1.2’
desired_caps[‘deviceName’] = ‘127.0.0.1:62001’
desired_caps[‘appPackage’] = ‘com.ss.android.article.lite’
desired_caps[‘appActivity’] = ‘com.ss.android.article.lite.activity.SplashActivity’
desired_caps[‘reset_keyboard’] = ‘True’
desired_caps[‘unicode_keyboard’] = ‘True’
driver = webdriver.Remote(‘http://localhost:4723/wd/hub’, desired_caps)
sleep(5)
agree = driver.find_element_by_id(‘com.ss.android.article.lite:id/b3y’)
if agree:
agree.click()
sleep(5)
close_alert = driver.find_element_by_id(‘com.ss.android.article.lite:id/a4p’)
if close_alert:
close_alert.click()
if True:
one = driver.find_elements_by_id(‘com.ss.android.article.lite:id/b_’)
print(one)
for i in one:
print(i.title())