zoukankan      html  css  js  c++  java
  • [爬虫] appium-移动端

    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 FilesJavajdk1.8.0_231

    Path:%JAVA_HOME%in     %JAVA_HOME%libdt.jar   %JAVA_HOME%lib ools.jar

    模拟器

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

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

    需要配Android环境变量

    ANDROID_HOME:C:Program Files (x86)Androidandroid-sdk

    Path:%ANDROID_HOME% ools   %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

  • 相关阅读:
    《集体智慧编程》第7章代码 Python3执行出错
    pymysql.err.IntegrityError: (1062, "Duplicate entry 'roxml-ROXML' for key 'PRIMARY'")
    Linux下MariaDB 安装及root密码设置(修改)
    Excel VBA入门(九)操作工作薄
    Excel VBA入门(八)单元格边框
    Excel VBA入门(七)注释、宏按钮及错误处理
    Excel VBA入门(六)过程和函数
    Excel VBA入门(五)Excel对象操作
    Excel VBA入门(四)流程控制2-循环控制
    Excel VBA入门(三) 流程控制1-条件选择
  • 原文地址:https://www.cnblogs.com/justaman/p/11778239.html
Copyright © 2011-2022 走看看