该文为 macaca 的 python 版本
macaca python 版本 https://github.com/macacajs/wd.py
下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html
找到合适的 java 版本下载,我选择的是 jdk-8u121-windows-x64.exe。按步骤安装即可。安装路径一般默认。
配置 java 环境变量:
JAVA_HOME 变量值为 JDK 的安装目录,笔者为 C:\Program Files\Java\jdk1.8.0_121
PATH PATH 变量值后追加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH 变量值为 ;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
检查是否安装成功
C:\Users\cmd>java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
下载地址 http://tools.android-studio.org/index.php/sdk 处下载 android-sdk_r24.4.1-windows.zip
将 android-sdk-windows 解压到你需要的目录下,笔者是 D:\Android\android-sdk-windows
配置 android-sdk 环境变量:
ANDROID_HOME 变量值为 android-sdk 的解压目录,笔者为 D:\Android\android-sdk-windows
PATH PATH 变量值的最后追加 ;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\build-tools;
接下来你便可以用 D:\Android\android-sdk-windows 下的 SDK Manager.exe 下载配置 SDK 或 AVD Manager.exe 配置 AVD 模拟器了。
此处不多讲了,如果你需要测试 macaca 支持的 android 应用的话,请先安装配置好某一版本的 SDK 及其相关工具。
win10 测试安卓应用的话目前我的配置是:
关于 Android 开发环境的大家可以参考此人的博客
Android SDK Manager 和 AVD Manager 使用
Android 开发环境配置
AVD 模拟器有些慢,我一般用的都是 Genymotion 请参考http://www.iplaysoft.com/genymotion.html 自行安装配置。
去官网 https://nodejs.org/en/ 下载 v6.10.0 LTS 这个稳定版本,也就是 node-v6.10.0-x64.msi 这个。
然后安装到本地 D:\nodejs
刚安装完是这样的版本
C:\Users\cmd>node -v
v6.10.0
C:\Users\cmd>npm -v
3.10.10
PS:node 的版本最好就用 LTS 这个长期技术支持稳定版本,其他版本会有问题。
npm 的版本无所谓,你升级到最新的 npm 3.10.10 弄 macaca 也不会有什么问题。
追加到 PATH 之后便可以了,D:\nodejs;D:\nodejs\node-global
去 D:\nodejs\目录下,新建 node-global 和 node-cache。先看下 如果已经有了 就不用再新建了。
C:\Users\cmd>npm config set prefix "D:\nodejs\node-global"
C:\Users\cmd>npm config set cache "D:\nodejs\node-cache"
检查下是否设置成功
C:\Users\cmd>npm config get prefix
D:\nodejs\node-global
C:\Users\cmd>npm config get cache
D:\nodejs\node-cache
再检查下安装源,我应该所有的安装源都是 taobao.org,安装源有问题的话
npm config set registry http://registry.npm.taobao.org
C:\Users\cmd>npm config get registry
http://registry.npm.taobao.org
PS: 推荐尽量用国内的淘宝镜像源,因为你懂得的原因某些组件需要国外服务器下载,下载会失败导致 macaca 相关安装失败。
macaca 最新的采用了 gradle 来构建和部署(以前有依赖 Apache ant 构建)。所以我们需要安装配置 gradle。
详见官方帮助 https://gradle.org/install 来部署安装好 gradle。
见到如下输出就说明 gradle 配置正确了:
win10 如下
C:\Users\cmd>gradle -v
------------------------------------------------------------
Gradle 3.5
------------------------------------------------------------
Build time: 2017-04-10 13:37:25 UTC
Revision: b762622a185d59ce0cfc9cbc6ab5dd22469e18a6
Groovy: 2.4.10
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_121 (Oracle Corporation 25.121-b13)
OS: Windows 10 10.0 amd64
然后就是安装 macaca-cli 和各种 macaca 驱动
npm i macaca-cli -g
npm i macaca-electron -g
npm i macaca-chrome -g
npm i macaca-android -g
最后 macaca doctor 检查环境
C:\Users\cmd>macaca doctor
macaca-doctor version: 2.0.2
Node.js checklist:
node env: D:\nodejs\node.exe
node version: v6.10.0
Android checklist:
JAVA version is `1.8.0_121`
JAVA_HOME is set to `C:\Program Files\Java\jdk1.8.0_121`
ANDROID_HOME is set to `D:\Android\android-sdk-windows`
Platforms is set to `D:\Android\android-sdk-windows\platforms\android-25`
ADB tool is set to `D:\Android\android-sdk-windows\platform-tools\adb.exe`
GRADLE_HOME is set to `D:\gradle-3.5`
Installed driver list:
android: 2.0.36
chrome: 1.0.6
electron: 1.1.11
官网下载最新的 python3 我下的是 python-3.6.2.exe 直接安装。
设置环境变量
PATH PATH 变量值后追加 D:\python\;D:\python\Scripts
检查 python -v 查看是否安装正确 后 exit() 退出 python 环境
D:\>cd macaca
D:\macaca>git clone https://github.com/macaca-sample/sample-python
地址 https://pypi.python.org/pypi/wd 也可如下命令安装
D:\macaca\sample-python\tests>python -m pip install wd
Collecting wd
Downloading wd-0.1.10-py3-none-any.whl
Requirement already satisfied: retrying in d:\python\lib\site-packages (from wd)
Requirement already satisfied: enum34 in d:\python\lib\site-packages (from wd)
Requirement already satisfied: requests in d:\python\lib\site-packages (from wd)
Requirement already satisfied: six>=1.7.0 in d:\python\lib\site-packages (from retrying->wd)
Installing collected packages: wd
Successfully installed wd-0.1.10
2.3 在安装下样例依赖
这步应该和上步骤重复都是 wd.py 环境安装,您可选择一种方式
D:\macaca\sample-python>pip install -r requirements.txt
Requirement already satisfied: wd in d:\python\lib\site-packages (from -r requirements.txt (line 1))
Requirement already satisfied: retrying in d:\python\lib\site-packages (from -r requirements.txt (line 2))
Requirement already satisfied: requests in d:\python\lib\site-packages (from wd->-r requirements.txt (line 1))
Requirement already satisfied: enum34 in d:\python\lib\site-packages (from wd->-r requirements.txt (line 1))
Requirement already satisfied: six>=1.7.0 in d:\python\lib\site-packages (from retrying->-r requirements.txt (line 2))
Cache entry deserialization failed, entry ignored
C:\Users\cmd>macaca server -p 3456 --verbose
>> index.js:18:12 [master] pid:18312 webdriver server start with config:
{ port: 3456,
verbose: true,
always: true,
ip: '*.*.68.*',
host: 'cmd',
loaded_time: '2017-09-11 14:33:28' }
>> middlewares.js:17:10 [master] pid:18312 base middlewares attached
>> router.js:127:10 [master] pid:18312 router set
>> webdriver sdk launched
D:\macaca\sample-python>python tests/macaca-desktop-sample.test.py
也可 继续 cd tests 到脚本目录 D:\macaca\sample-python\tests>下执行 python macaca-desktop-sample.test.py
desktop 依赖 electron
如果跑 android 脚本 需要启动一安卓模拟器比如 genymotion 再同理执行 D:\macaca\sample-python\tests>python macaca-android-sample.test.py
默认不改动的 macaca-android-sample.test.py 貌似有问题 python 执行命令行 会显示 Retry connecting server... 然后 macaca server 命令行一直在
>> start to download: https://npmcdn.com/android-app-bootstrap@latest/android_app_bootstrap/build/outputs/apk/android_app_bootstrap-debug.apk
并无后续响应,停在这儿一直不走了。
单独访问该下载地址又是可以直接下载下来的,于是我将该段下载测试 apk 的代码 改为如下:即直接访问链接下载到本地某一位置。
desired_caps = {
'platformName': 'android',
'app': 'D:\\Install\\apk\\android_app_bootstrap-debug.apk',
}
最后在执行 测试通过
最后再尝试新建一自家 apk 测试
import unittest
import os
import time
from macaca import WebDriver
desired_caps = {
'platformName': 'android',
'app': 'D:\\Install\\apk\\****.apk',
'reuse': 3
}
server_url = {
'hostname': 'localhost',
'port': 3456
}
class MacacaTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = WebDriver(desired_caps, server_url)
cls.driver.init()
@classmethod
def tearDownClass(cls):
cls.driver.quit()
def test_01_login(self):
self.driver \
.element_by_id('com.acp.main:id/tvBottomTab4') \
.click()
time.sleep(5)
self.driver\
.element_by_id('com.acp.main:id/layoutLogin')\
.click()
time.sleep(5)
self.driver\
.element_by_id('com.acp.aicaitencent:id/etUserName')\
.send_keys('********')
time.sleep(5)
self.driver\
.element_by_id('com.acp.aicaitencent:id/etPwd')\
.send_keys('*******')
time.sleep(5)
self.driver\
.element_by_id('com.acp.aicaitencent:id/tvLogin')\
.click()
time.sleep(5)
if __name__ == '__main__':
unittest.main()
测试通过
以上为本日 9 月 11 日中午休息 尝试 python 版本的 macaca 记录