1、思路

根据appium连接安卓真机进行一系列操作

2、代码

# -*- coding: UTF-8 -*-

# v0.1-20201125

from appium import webdriver

import time

appdata = {

'noReset': True,

'platformVersion': '10',# (Android)系统版本号

'appPackage': 'com.eg.android.AlipayGphone',# APP包名

'appActivity': 'com.eg.android.AlipayGphone.AlipayLogin',# APP包启动路径

'platforVersion': '4.4.2',

'uuid': '',

'deviceName': 'test_phone',# 别名

'platformName': 'Android'# 设备型号

}

shenlindata = {

'entrance_identification': '蚂蚁森林',# 首页的‘蚂蚁森林’文字标识

'energy_map_id': 'J_tree_dialog_wrap',# ‘找能量’ID

'energy_map_coords': [(971,1558)],#[(540,612),(1080,1623)],# ‘找能量’坐标

'energy_pay_text': '我的大树养成记录',# ‘找能量’后页面的标识

'steal_coords': [[(216,750)],[(298,701)],[(381,653)],[(463,605)],[(546,605)],[(628,653)],[(711,701)],[(793,750)]] # “偷”能量的点击坐标列表值(有待于优化)

}

timesleepdata = {

'app_start': 0 # APP启动后等待时间

}

appiumurl = 'http://127.0.0.1:4723/wd/hub'

# 点击'id'

def click_id( driver, id ):

try:

driver.find_element_by_id(id).click()

return True

except Exception as args:

print(args)

# 点击'accessibility id'

def click_accessibility_id( driver, mId ):

try:

#click_linkmanMsgidCoords(driver, mId)

driver.find_element_by_accessibility_id(mId).click()

return True

except Exception as args:

print(args)

# 点击某个‘mId’元素第一次出现是的坐标

def click_linkmanMsgidCoords( driver , mId):

try:

pageStr = driver.page_source

for line in pageStr.splitlines():

if mId in line:

line_subStr = line.split()

#print(line_subStr)

for s in line_subStr:

if 'bounds=' in s:

s2 = s.replace('bounds=','|').replace('"','').replace('[','|').replace(']','|').replace(',','|')

s3 = s2.split('|')

for ss3 in s3:

if '' is ss3:

s3.remove(ss3)

c1 = (int(s3[0]),int(s3[1]))

c2 = (int(s3[2]),int(s3[3]))

coords = [c1,c2]

return click_tap(driver, coords)

except Exception as args:

print(args)

# 点击'坐标点'

def click_tap( driver, coords ):

try:

driver.tap(coords)

return True

except Exception as args:

print(args)

# 判断’page‘中是否存在'sub_str'

def judge_driver_element( sub_str, str ):

try:

if str is None:

return False

if sub_str in str:

return True

except Exception as args:

print(args)

# 日志输出至文件

def log( logstr ):

f = open('log.txt', 'w')

print(logstr.encode('utf-8'), file = f)

f.close()

# 执行‘死循环’的【偷】当前页面

def steal_run_while( driver ):

for steal_c in shenlindata['steal_coords']:

try:

click_tap(driver, steal_c)

time.sleep(1)

except Exception as args:

print(args)

# 已经进入蚂蚁森林中,准备‘死循环’的【偷】所有可‘偷’的人

def sl_run( driver ):

while True:

try:

flag = judge_driver_element(shenlindata['energy_map_id'], driver.page_source)

if(flag):

flag = click_id(driver, shenlindata['energy_map_id'])

time.sleep(1)

print('---1')

print(flag)

if(flag):

steal_run_while(driver)

else:

flag = click_tap(driver, shenlindata['energy_map_coords'])

time.sleep(1)

print('----2')

print(flag)

if(flag):

steal_run_while(driver)

else:

flag = click_tap(driver, shenlindata['energy_map_coords'])

time.sleep(1)

print('---3')

print(flag)

if(flag):

steal_run_while(driver)

except Exception as args:

print(args)

break

def run_phone( appiumurl, appdata):

driver = None

try:

driver = webdriver.Remote(appiumurl, appdata)# 打开手机APP

timesleep = timesleepdata['app_start']

if timesleep > 0:

time.sleep(timesleep)# 等待'APP'启动

if driver is None:

print('APP启动失败')

else:

flag = judge_driver_element(shenlindata['entrance_identification'], driver.page_source)

if(flag):

flag = click_linkmanMsgidCoords(driver, shenlindata['entrance_identification'])

print(flag)

sl_run(driver)

except Exception as args:

print(args)

def main():

print('APP启动')

while True:

try:

run_phone(appiumurl, appdata)

except Exception as args:

print(args)

print('运行结束')

if __name__ == '__main__':

main()

3、需要修改和优化地方

appdata.uuid:根据自己使用安卓真机填写(一般可使用“adb devices”获取)

appdata.platformVersion:(Android)系统版本号根据安卓真机填写(不用填写系统小版本号,只要大版本号,例如:10、9、8、7...)

shenlindata.steal_coords:“偷”能量的点击坐标列表值,一个弧形的路线(一般会跟手机默认的分辨率有关,也跟“树”的装扮有关)

shenlindata.energy_map_coords:‘找能量’坐标位置,一般会跟手机默认的分辨率有关(使用AppiumUI/代码断点调试自行获取即可)

4、附言

本代码将持续更新,

同时也欢迎各路大神指导;

如有新的思路等办法,

也欢迎指导、讨论...

shell蚂蚁森林_和“蚂蚁森林”的融合相关推荐

  1. sklearn 随机森林_初识随机森林及sklearn实现

    1.随机森林简介 (1)相关概念介绍:集成学习(Ensemble).自助法(bootstrap).自助抽样集成(bagging) 集成学习:组合多个弱监督模型得到一个更全全面的强监督模型,增强整体的泛 ...

  2. 用mysql搭建蚂蚁笔记_搭建蚂蚁笔记(服务器)

    为了能将笔记保存在自己的服务器上,可以使用蚂蚁笔记这款软件 一.环境配置 使用的Linux版本为CentOS7,搭载在腾讯云中 二.安装MongoDB 具体内容可以查看:https://www.cnb ...

  3. 机器学习中决策树的随机森林_决策树和随机森林在机器学习中的使用

    机器学习中决策树的随机森林 机器学习 (Machine Learning) Machine learning is an application of artificial intelligence ...

  4. 怎么关闭蚂蚁庄园_蚂蚁庄园账户如何注销

    怎么关闭蚂蚁庄园_蚂蚁庄园账户如何注销 蚂蚁庄园的小鸡不喂它经常会收到提醒,非常烦人.那么,怎么关闭蚂蚁庄园_蚂蚁庄园账户如何注销呢?下面让我来给大家介绍下吧,希望对大家有所帮助. 工具/原料 蚂蚁庄 ...

  5. r与python做随机森林_随机森林算法入门(python)

    昨天收到yhat推送了一篇介绍随机森林算法的邮件,感觉作为介绍和入门不错,就顺手把它翻译一下. 目录 1 什么是随机森林 1.1 集成学习 1.2 随机决策树 1.3 随机森林 1.4 投票 2 为什 ...

  6. 随机森林原始论文_初识随机森林

    在机器学习中,随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定. 发展出推论出随机森林的算法. 而 "Random Forests" 是他们的 ...

  7. 在envi做随机森林_随机森林原理

    随机森林由Leo Breiman(2001)提出的一种分类算法,它通过自助法(bootstrap)重采样技术,从原始训练样本集N中有放回地重复随机抽取n个样本生成新的训练样本集合训练决策树,然后按以上 ...

  8. cross_val_score 如何对孤立森林_泸县九中开展 “森林草原防灭火”主题班会活动...

    泸县九中开展 "森林草原防灭火"主题班会活动为加强学生防护森林火灾的安全意识,9月6日,泸县九中开展 "森林草原防灭火"主题班会活动,学校各班参与.班会课上,班 ...

  9. python随机森林筛选变量_用随机森林分类器和GBDT进行特征筛选

    一.决策树(类型.节点特征选择的算法原理.优缺点.随机森林算法产生的背景) 1.分类树和回归树 由目标变量是离散的还是连续的来决定的:目标变量是离散的,选择分类树:反之(目标变量是连续的,但自变量可以 ...

  10. java 森林_森林 - Minecraft Wiki,最详细的官方我的世界百科

      本文章介绍的是常规森林.关于其他森林生物群系,请见" 森林(Forest)群系是一种常见的茂密生物群系.它一共有3种变种. 森林群系的一大特点是在其绵延的地形中有大量的橡树与白桦树.在森 ...

最新文章

  1. Question: Short And Long Read Sequencing
  2. escape sequence
  3. LTE voice centric和data centric
  4. (转)当别人努力的时候,你在做什么?
  5. import lombok 报错_Android上使用Lombok和set、get方法告别
  6. 前端学习(1713):前端系列javascript之运行
  7. 计算机可以按用户观点分吗,2016-2017杭州师范大学操作系统期末考试选择题
  8. ef 执行mysql语句_在EF中执行SQL语句
  9. Eclipse集成Git插件及使用
  10. Cookie的格式及组成
  11. Laya中使用tiledMap瓦片地图以及遇到的坑
  12. 计算机二级题库access选择题_计算机二级access选择题题库
  13. c语言写的电脑开关机代码,只需要几行代码制作电脑开关机控制软件
  14. c语言个人所得税,C语言编写一个计算个人所得税的程序,要求输入收入金额,能够输...
  15. max导出fbx动画模型导入unity后播放会出现局部模型扭曲解决办法总结
  16. 谷哥闹别扭,谷姐来上场
  17. 笔记本固态硬盘温度测试软件,固态硬盘散热测试
  18. 易语云模块-易语言邮件发送模块下载(含命令详解)
  19. 网络安全职业_我如何开始网络安全职业
  20. 使用灰度图作为数据集训练CNN

热门文章

  1. 我国计算机发展的四个阶段,计算机发展历程.ppt
  2. 2020.1.8学习
  3. 新买的笔记本计算机内存不足,笔记本内存不够怎么办_笔记本内存不足如何解决...
  4. 云队友丨华为选拔人才,最看重这5个素质,已经用了15年
  5. 杭州电子科技大学计算机专业考研分数线,2019杭州电子科技大学研究生分数线汇总(含2016-2019历年复试)...
  6. 学校计算机室如何连接热点,电脑连热点怎么操作
  7. 【华为机试真题 Python实现】平安果
  8. IP协议的详细知识总结
  9. 小球斜抛公式用C语言怎么写,利用C4droid绘制小球斜抛运动轨迹(考虑空气阻力)...
  10. php学籍信息管理系统心得_php学籍管理系统,源码免费分享