摘要

本文主要介紹犀光科技app自動控制系統的搭建,利用python腳本驅動appium從而控制模擬器中app的行爲。

基本關係圖

環境搭建

一、python3 安裝

直接登錄Python官網[https://www.python.org],下載最新版本即可。安裝完python3並添加環境變量後,在控制檯(cmd)裏輸入命令pip install Appium-Python-Client安裝 Appium python 模塊二、安卓sdk(Android studio)

下載地址:https://developer.android.com/studio/#downloads下載完解壓安裝即可,注意安裝目錄位置三、Java環境

下載地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html注意Java安裝jre1.8四、安裝夜神模擬器

下載地址:https://www.yeshen.com/安裝方法同上五、安裝appium

Windows地址:https://github.com/appium/appium-desktop/releases/download/v1.7.1/appium-desktop-setup-1.7.1.exe官網地址:http://appium.io/安裝完夜神模擬器後,打開安裝目錄,進入到bin目錄(比如:D:\Nox\bin)把安裝好的Android SDK目錄裏的adb.exe文件(比如我的在D:\Android\SDK\platform-tools目錄下)複製到該目錄覆蓋掉該目錄已存在的adb.exe文件刪掉該目錄的nox_adb.exe文件,再複製一份adb.exe並重命名爲nox_adb.exe啓動夜神模擬器再該目錄打開控制檯,執行nox_adb.exe connect 127.0.0.1:62001,然後執行adb devices,看到如下信息就表示成功了(注意:這一步很重要)appium配置 安裝完成後啓動appium,host和port保持默認

請配置配置點擊

配置

六、編寫模擬點擊腳本

夜神模擬器對應要抓取的app需要自己另外下載,不能用模擬器自帶的微信等app查看安裝包對應代碼:在控制檯窗口裏輸入aapt dump badging D:\apk\com.youdao.calculator-2.0.0.apk,其中D:\apk\com.youdao.calculator-2.0.0.apk是測試apk的完整路徑。python代碼

# -*- coding:utf-8 -*-import osimporttimeimport jsonimport redisimport randomimport datetimeimport requestsimport loggingimport locale# import xpinyinimport threadingimport tracebackfrom appium import webdriverfrom selenium.webdriver.common.byimport By

from selenium.webdriver.support.ui import WebDriverWaitfrom appium.webdriver.common.touch_action import TouchActionfrom selenium.webdriver.support import expected_conditions as ECimport configparser

class APP(): #初始化 def __init__(self,appPackge,appActivity,devicename): self.log_proxy = 'http://103.229.213.250:16377/crawl_log_proxy' self._cf = configparser.ConfigParser() self._conf_path ='D:/mitian/weixin/jrtt_conf.conf' # self._conf_path ='jrtt_conf.conf' self._cf.read(self._conf_path ,encoding='utf-8') self.desired_caps = { "platformName": "Android", "platformVersion": "5.1.1", "deviceName": devicename, "appPackage": appPackge, "appActivity": appActivity, "noReset": True, "udid":devicename }

def turn_to_app(self, name): #啓動app try: print('啓動webdriver進入' + str(name)) self.driver = webdriver.Remote('http://localhost:4723/wd/hub', self.desired_caps) # self.driver = webdriver.Remote('http://192.168.1.31:19001/wd/hub', self.desired_caps) self.wait = WebDriverWait(self.driver,120) print('starting ...') time.sleep(random.randrange(25, 30)) print(str(name) + '啓動完成') except BaseException: traceback.print_exc()

總結

爭對一些對於sign、token等參數的即時性要求較高的app,當我們不願花費太多時間在參數解析上時我們就可以使用這套系統,通過自動點擊app來截獲相關請求信息,從而達到抓取的目的。

相關文章