Appium 作为移动端自动化测试工具在业界非常流行,特别是在当前移动互联网背景下,很多公司基于此框架来开展自动化测试。但 appium 的环境配置相对 selenium 来说复杂的多,让很多同学望而生畏。本文介绍 appium + python 基于windows 平台来搭建环境。

环境准备

  • jdk1.8
  • node
  • Appium
  • android-sdk
  • python 3.7
  • Appium-Python-Client

1、安装 jdk,配置环境变量下载地址

2、安装 node.js ,下载地址

3、安装 appium,方式一:直接下载软件安装;方式二:npm install -g appium

4、安装 android-sdk,下载地址

下载解压后运行 SDK Manager.exe

下载 build-tools 工具

环境变量

新增系统变量名 ANDROID_HOME ,变量值:D:\android-sdk-windows (android-sdk 主目录)

系统变量 Path 添加 adb 和 aapt 变量值。

adb 变量值:D:\android-sdk-windows\platform-tools

aapt 变量值:D:\android-sdk-windows\build-tools\29.0.2

5、Python 安装

6、Appium-Python-Client 安装

pip3 install Appium-Python-Client

启动 Appium

点击启动服务

{
  "platformName": "Android",
  "platformVersion": "5.1.1",
  "deviceName": "huawei VOG-AL10",
  "appPackage": "com.xingin.xhs",
  "appActivity": "com.xingin.xhs.activity.SplashActivity"
}

获取包名 后面是apk的位置

> aapt dump badging C:\Users\Coolin\Desktop\xhs.apk

往下面找到 launcherActivity

然后 start session 就OK了


class Xhs_app_crawl:

    def __init__(self, ) -> None:
        self.desc={}
        self.desc['deviceName']='127.0.0.1:62001'#手机设备名称,adb devices
        self.desc['platformVersion']='5.1.1'#手机版本,在手机中:设置--关于手机
        self.desc['platformName']='Android' #手机类型,ios或android
        #输入命令,获取app信息:aapt dump badging C:\Users\83473\Desktop\mobileqq_android.apk
        self.desc['appPackage']='com.xingin.xhs'#包名
        self.desc['appActivity']='com.xingin.xhs.activity.SplashActivity'#启动入口
        self.desc["unicodeKeyboard"] = "True"#appium提供的一种输入法,可以传中文。测试时直接用这个输入法
        self.desc["resetKeyboard"] = "True"#程序结束时重置原来的输入法
        self.desc["noReset"] = "True"#不初始化手机app信息(类似不清除缓存)

        self.driver=webdriver.Remote('127.0.0.1:4723/wd/hub',self.desc)#访问服务接口,并启动手机app。url参数是当appium启动后,默认访问服务地址和接口

        self.get_local_xhs_data = Get_sky_data()
        self.xhs_store = Xhs_store()
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
            'Authorization': asyncio.run(Login.skytoken()) ,
            'Content-Type': 'application/json;charset=UTF-8',
        }
        self.count = 0
        self.redis_api = Redisapi(4)
        self.redis_api5 = Redisapi(5)


    async def get_local_data(self):
        """
        # 获取需要爬取的本地数据
        """
        name_list = []
        detail_dic = {}
        all_data = await self.get_local_xhs_data.asyncio_get_media_platform_all_kol_info(XiaoHongShu_MEDIA_PLATFORM_ID)
        for kol in all_data:
            name = kol['accountName']
            kol_id = kol['accountId']
            name_list.append({kol_id: name})
            detail_dic[kol_id] = kol
            # time.sleep(4)
        return name_list, detail_dic

    def handler(self):
        """
        # appium 操作手机
        """
        self.captcha()
        self.__try(lambda: self.driver.find_element_by_id("com.xingin.xhs:id/d6n").click(), '已跳过广告') 

 posted on 2020-12-11 11:37  Rannie`  阅读(204)  评论(0编辑  收藏  举报
去除动画
找回动画