adb

安装:下载android-sdk压缩包,解压后其中有adb.exe,配置环境变量后即可

cmd下‘adb’即可启动adb客户端

adb devices –l  查看已连接的模拟器

adb connect 127.0.0.1:62001  手动连接第三方模拟器(夜神)

adb原理:

启动某个 adb 客户端时,客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令;

通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护进程 (adbd),便会与相应的端口建立连接

参考:https://developer.android.google.cn/studio/command-line/adb

appium

安装:两种方式

1.基于node的安装

appium依赖于node,所以先安装node(exe文件)

用node的npm安装appium

npm install -g appium

cmd下‘appium’命令即可启动

2.安装桌面版(常用)

通过exe安装

有客户端的功能,代替python测试代码,和连接后的查找功能

appium原理:(appium-client,appium-server,bootstrap,uiautomator)

1.c/s架构,客户端将测试代码发送给appium-server,appium服务器为4723,

2.模拟器上安装bootstrap.jar,开启socket-server(端口4724)与appium通信,并将请求转换成UiAutomator可以识别的命令

3.uiautomator执行命令,产生效果

即:appium端口4723接收客户端命令,模拟器端口4724接收appium命令,uiautomator执行命令

appium需要依赖于adb的连接

python的appium客户端

安装:pip install appium-python-client

连接:

from appium import webdriver
desired_caps = {
'platformName': 'Android',
'deviceName': '127.0.0.1:62001',
'platformVersion': '5.1.1',
# apk包名
'appPackage': 'com.taobao.taobao',
# apk的launcherActivity
'appActivity': 'com.taobao.tao.welcome.Welcome'
} driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

aapt dump badging获取apk包名和activity

需要配java的环境变量

安装jdk

JAVA_HOME:C:\Program Files\Java\jdk1.8.0_231

Path:%JAVA_HOME%\bin     %JAVA_HOME%\lib\dt.jar   %JAVA_HOME%\lib\tools.jar

模拟器

自带的:AVD Manager.exe,创建虚拟机

第三方:genymotion(不卡),夜神(卡)

需要配Android环境变量

ANDROID_HOME:C:\Program Files (x86)\Android\android-sdk

Path:%ANDROID_HOME%\tools   %ANDROID_HOME%\platform-tools

安装genymotion:

很方便,直接下载好软件,在里面选择需要的Android版本和机型即可创建一个虚拟机

无法安装app的问题:

因为genymotion模拟器使用的是x86架构,而app只支持arm架构,所以无法安装成功

需要下载对应Android版本的Genymotion-ARM-Translation_for_8.0的压缩包,直接拖进模拟器即可,之后便可成功安装app

模拟器如果卡,真机也行,打开开发者模式-调试即可

手机抓包https无法获取数据的问题

原因:一般情况下,是在建立连接时,服务器将证书传给客户端,然后客户端进行校验;而SSL Pinning是在开发时就将证书内置进app中,在建立连接时,与返回的证书比对,如果不一致则建立连接失败

而一般是用fiddler/charles来代理抓包,使用的是fiddler提供的证书,肯定不一致

解决:SSL Pinning是一个函数校验,通过反编译app,去掉校验函数;Xposed的JustTrustMe模块可实现

参考:https://www.weiney.com/2015.html

手机爬虫--appium的更多相关文章

  1. 手机自动化测试:Appium代码之Logger

    手机自动化测试:Appium代码之Logger   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest推出手机自动化测 ...

  2. Fiddler 手机爬虫

    Fiddler抓包工具 配置Fiddler 添加证书信任,Tools - Options - HTTPS,勾选 Decrypt Https Traffic 后弹出窗口,一路确认 ...from bro ...

  3. 锤子手机做appium自动化测试时,运行脚本总是弹出警告框的问题

    当运行脚本的时候,总是提示若干个如上提示框,必须点击同意才能进行下一步:解决方案: 在设置,全局高级设置,开发者选项中打开“总是允许USB安装应用”即可解决:

  4. appium 【已解决】Android,每次启动手机中都会安装Appium settings和Unclock的方法

    环境介绍: 1.appium版本:1.4.16.1 2.真机运行 实现结果: 运行appium第一次运行则安装Appium settings和Unclock的apk,再次之后的运行则无需手动卸载,再次 ...

  5. 全面超越Appium,使用Airtest超快速开发App爬虫

    想开发网页爬虫,发现被反爬了?想对 App 抓包,发现数据被加密了?不要担心,使用 Airtest 开发 App 爬虫,只要人眼能看到,你就能抓到,最快只需要2分钟,兼容 Unity3D.Cocos2 ...

  6. appium基础一:连接手机和appium-desktop定位元素

    一.获取手机信息 adb devices获取手机或模拟器的设备名 aapt dump badging xxxx.apk获取app的包名.入口等基本信息 如果想要知道手机原生携带的app的基本信息,首先 ...

  7. Python3+Appium安装使用教程

    一.安装 我们知道selenium是桌面浏览器自动化操作工具(Web Browser Automation) appium是继承selenium自动化思想旨在使手机app操作也能自动化的工具(Mobi ...

  8. Appium环境搭建-精简版

    Appium自动化环境准备 安装配置JDK 下载Android SDK并配置环境变量 安装模拟器或连接真机 安装appium desktop 安装python和pycharm (开发语言和开发工具) ...

  9. Appium -选择、操作元素4

    webvie的测试 混合(Hybrid)应用 一部分是原生界面和代码,而一部分是内嵌网页 比如微信.支付宝 内嵌了一个浏览器内核,由浏览器内核实现的 安卓应用中的内嵌的展示网页内容的模块,我们称之为w ...

随机推荐

  1. springboot+shrio简易登录登出和用户权限认证。

    源码:https://github.com/huangshengz/myJavaDemo本例子参考:https://www.cnblogs.com/HowieYuan/p/9259638.html 本 ...

  2. 改善java程序的151个建议

    <编写高质量代码-改善java程序的151个建议> --秦小波 第一章.开发中通用的方法和准则 1.不要在常量和变量中出现易混淆的字母 long a=0l; --> long a=0 ...

  3. ZooKeeper 入门看这篇就够了

    什么是 ZooKeeper? ZooKeeper 是一个分布式的,开放源码的分布式应用程序协同服务.ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原 ...

  4. Azure CosmosDB (14) 使用Postman访问CosmosDB REST API

    <Windows Azure Platform 系列文章目录> 今天研究了一下如何使用Postman访问Azure CosmosDB. CosmosDB API接口,可以参考:https: ...

  5. (四十一)golang--goroutine

    首先得了解: 进程 线程 并发 并行 Go协程和Go主线程: 主线程:相当于进程:直接作用于cpu上,是重量级的,是物理态的: 协程:相当于轻量级的线程:由主协程开启,是逻辑态的: Go协程的特点: ...

  6. 如何让 C# 在运行时自动选择合适的重载方法?

    如题:假设我们有一段代码: static void Main(string[] args) { ; // 假设这里的 obj 的值来自于外部方法 PrintType(obj); } public st ...

  7. C# 截图ScreenCapture,保存

    简化版: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...

  8. 三维网格精简算法(Quadric Error Metrics)附源码(转载)

    转载:  https://www.cnblogs.com/shushen/p/5311828.html 在计算机图形应用中,为了尽可能真实呈现虚拟物体,往往需要高精度的三维模型.然而,模型的复杂性直接 ...

  9. TCP SYN flood洪水攻击原理和防御破解

    简介 TCP协议要经过三次握手才能建立连接: 于是出现了对于握手过程进行的攻击.攻击者发送大量的SYN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+AC ...

  10. Kibana插件开发

    当前开发环境 Kibana版本:7.2 elasticsearch版本:7.2 开发环境安装可参考:https://github.com/elastic/kibana/blob/master/CONT ...