sudo apt install openjdk-8-jdk
java -version

sudo apt update
sudo apt install android-sdk
sudo apt install android-tools-adb

安装好后,sdk位置为/usr/lib/android-sdk/

设置环境变量

vi .bashrc
source .bashrc

export ANDROID_HOME=/usr/lib/android-sdk
export PATH=$PATH:$ANDROID_HOME/tools
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/jre
export PATH=$PATH:$JAVA_HOME/bin

生效:
source .bashrc

安装nvm
cd ~/
git clone https://github.com/nvm-sh/nvm.git .nvm
. ./nvm.sh

vi .bashrc
添加:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

否则下次进入无法找到命令appium nvm node.

切换国内源:
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
安装node, npm
nvm install --lts

node -v
npm -v

npm 切换阿里源

npm config set registry https://registry.npm.taobao.org

安装appium

npm intall -g appium

启动:
appium &

安装python

apt-get install python3
apt-get install python3-pip

安装python客户端

pip install appium-python-client
(安装python库)

py脚本

#!/usr/bin/env python3
# encoding: utf-8
from appium import webdriver
import time
desired_caps={'platformName':'Android','deviceName':'HXJNW18223012xxxx', #填写自己的deviceName'platformVersion': '8.0.0','appPackage': 'com.tencent.mm','appActivity':'.ui.LauncherUI','noReset': True
}
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
time.sleep(10)
driver.quit()

注意deviceName platformVersion要填写正确

注意脚本里面的noReset true,如果没有这个,微信聊天记录会被清空!!!!其他应用也是吧

windows 安装

http://www.haovps.com.cn/article/187648.html

错误调试:
appium 启动的一个错误Unable to find an active device or emulator with OS 10. The following are available: RFCNA082NWX (11)
系统版本错误,platformVersion

urllib3 (1.26.9) or chardet (3.0.4) doesn’t match a supported version

解决方法:

pip3 install --upgrade requests

inspect 中如果出现:/session

解决方法:新版inspector中的Remote Path我看了一下默认值是“/”,之前版本都默认好了的,把这个改为“/wd/hub“就行了

1 获取栈顶 Activity
打开目标应用,使用 adb 查找当前界面所属 activity 及对应的 app 包名

方法一:
adb shell dumpsys window | findstr mCurrentFocus
方法二:
adb shell dumpsys activity | findstr mFocusedActivity

如何获取一个APP的包名

1.adb shell pm list package -f

1.dump package 包名

使用命令:adb shell

        dumpsys package com.saj.esolar 回车之后找到包含“category.LAUNCHER” 字样的Activity即可

2.使用Monkey命令 monkey -p com.saj.esolar -vvv 1 可以设置日志的详细程度,当我们指定为 -VVV 的时候,并且指定模拟随机事件为一次,即可查看:

启动多个server

appium 多设备
Appium在分布式同时执行多设备时,是必须一个appium服务端对应一台设备,并且根据app类型的不同,启动服务端所带的参数也不同,以下是对各种类型应用的服务端对应启动命令详解:

-p :表示appium服务端和测试脚本之间通信的端口

-bp:表示appium服务端和手机上的bootstrap服务通信的端口

–chromedriver-port:表示启动的chromedriver的端口

  1. 原生app

appium -p 4490 -bp 2345 第一台设备对应的服务端启动命令

appium -p 4491 -bp 2346 第二台设备对应的服务端启动命令

  1. 混合app

appium -p 4490 -bp 2345 --chromedriver 8201 第一台设备对应的服务端启动命令

appium -p 4491 -bp 2346 --chromedriver 8202 第二台设备对应的服务端启动命令

  1. 纯H5 app

appium -p 4490 --chromedriver-port 8001 第一台设备对应的服务端启动命令

appium -p 4491 --chromedriver-port 8002 第二台设备对应的服务端启动命令

  1. 使用uiautomator2模式时,需要指定服务端和手机上uiautomator2服务通信的端口,但是该端口目前在启动appium时无法指定,需要在脚本中的driver初始化参数里进行指定,如:

DesiredCapabilities caps = new DesiredCapabilities();

caps.setCapability(AndroidMobileCapabilityType.SYSTEM_PORT, 8201);

python 样例:

https://blog.csdn.net/u013314786/article/details/83216390?

php 样例

https://applitools.com/tutorials/appium-native-php.html#install-the-sdk

中文文档:

http://appium.io/docs/cn/writing-running-appium/caps/

键盘:https://blog.csdn.net/linmumum/article/details/89487080
python+appium,回车,手机键盘等调用

from appium import webdriver
import time
desired_caps={'platformName':'Android',
'deviceName':'192.168.132.8', #填写自己的deviceName
'platformVersion': '11',
'appPackage': 'com.android.browser',
'appActivity':'com.android.browser.BrowserActivity',
'noReset' : True
}
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)#time.sleep(15)
#driver.find_element('com.android.permissioncontroller:id/content_container').click()#time.sleep(5)
#driver.find_element('com.android.permissioncontroller:id/content_container').click()#time.sleep(5)
#driver.find_element_by_id('com.android.permissioncontroller:id/content_container').click()driver.find_element(by='id',value='com.android.browser:id/url').click()
time.sleep(5)
print('在搜索框输入')
driver.find_element(by='id',value='com.android.browser:id/url').send_keys('www.baidu.com\n')
time.sleep(2)
driver.press_keycode(66)
time.sleep(10)
driver.quit()

其他资源:

控制设备:
About
Control and manage Android devices from your browser.

https://github.com/kin9-0rz/apkutils

Genymobile
scrcpy
Display and control your Android device

https://github.com/Genymobile/scrcpy

多屏投屏:
https://www.jianshu.com/p/32e7254f1fdb

JAVA案例
https://blog.csdn.net/yqw7410/article/details/88043193
https://www.jianshu.com/p/a3ba6835cebd
APP自动化测试神器之Appium-QQ登录脚本实战(java版)
https://zhuanlan.zhihu.com/p/144670335
https://zhuanlan.zhihu.com/p/136289385

Appium-元素定位(Java篇)
https://www.cnblogs.com/bugoobird/p/13797814.html

appium 安装方式相关推荐

  1. Appium安装(Mac版)

    一.Appium简介 Appium 是一个开源的.跨平台的测试框架,可以用来测试 Native App.混合应用.移动 Web 应用(H5 应用)等,是当下互联网企业实现移动自动化测试的重要工具. 二 ...

  2. Appium安装过程

    Appium安装过程 先安装了 Node.js.在node的官网上下载的exe安装文件. 在node的command line中执行 npm install -g appium 来安装appium,报 ...

  3. Appium基础 — APPium安装

    APPium安装 我们要使用APPium测试框架,首先就需要安装APPium服务,Devices代表我们要链接的手机,Appium Client为我们写代码的客户端(也就是测试脚本,需要用哪个脚本语言 ...

  4. MacOS系统Appium安装与配置

    一.软件安装 1.版本说明 教程用到的各个软件的版本如下,但是node,java,xcode,Appium Inspector建议下载最新版本: macOS: 12.1 (21C52) node: v ...

  5. Appium自动化测试基础 — APPium安装(一)

    三.APPium安装 我们要使用APPium测试框架,首先就需要安装APPium服务,Devices代表我们要链接的手机,Appium Client为我们写代码的客户端(也就是测试脚本,需要用哪个脚本 ...

  6. APPIUM安装与使用

    APPIUM安装与使用 安装步骤: 一.JAVA JDK 二.Android SDK 三.node.js 四.Appium 五.Python环境 六.Appium-python-clienf 安装步骤 ...

  7. 『与善仁』Appium基础 — 14、APPium安装(包含Node.js安装)

    文章目录 (一)APPium server安装 方式一:(推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二: 1.Nod ...

  8. appium安装说明

    一.appium背景介绍 1.官网:www.appium.io,由SauceLab公司开发 2.Appium是由node.js的express框架写的Http Server, Appium使用WebD ...

  9. Python+appium安装和演示

    这里写目录标题 Appium 1.Appium背景介绍 2.Appium命令行安装方式 3.Appium-python库安装,命令行安装(需要联网) 4. Appium桌面客户端安装方式 5.APPi ...

最新文章

  1. 中北大学c语言程序设计作业答案,C语言程序设计
  2. C++中重载与重写函数区别及虚函数(转载)
  3. php序列化和反序列化
  4. 【算法】斐波那契数列
  5. MySQL高级知识(十四)——行锁
  6. 线程同步之 生产者消费者模型详解
  7. for语句嵌套执行顺序_Python基础教程(四):循环语句
  8. 《Using OpenRefine》翻译~15
  9. 在VS中生成汇编语言程序(.asm文件)的方法
  10. mingw socket编程
  11. 熔断器 java_SpringCloud之熔断器Hystrix的实现
  12. 计算机的专业课听不懂怎么办,为什么大学计算机课难以听懂?
  13. ReactNative出现诸如以上的错误; ** is not defined.都是没有导入相应的库.
  14. [业务流程]JWT实现单点登录(SpringBoot + Vue +axious)
  15. 利用tensorflow训练自己的图片数据(1)——预处理
  16. 推荐书籍:WebRTC技术详解 从0到1构建多人视频会议系统
  17. python怎么做网站6_网站开发学习Python实现-Django学习-自学注意(6.1.3)
  18. scala akka 修炼之路6(scala函数式柯里化风格应用场景分析)
  19. 奥鹏福建师范大学2021年2月考试《计算机应用基础》作业56754
  20. 《张孝祥JAVA就业培训教程》书摘

热门文章

  1. Latex 公式编辑,添加大括号
  2. python窗体开发_python开发窗体
  3. Proteus仿真-LCD1602液晶屏使用方法(驱动一)
  4. mapState的使用
  5. 文件读写(Linux)
  6. 信创云,一朵不妥协的云
  7. input限制输入数字减号_修正带有尾随减号的数字
  8. 用Pelican+Github搭建个人博客网站
  9. [Pelican] 使用Pelican搭建静态博客
  10. java jdbctemplate的增删改查的实现