用 Appium 自动收取蚂蚁森林能量
支付宝集 5 福让小编打开了尘封已久的蚂蚁森林小程序,它刚出来那会儿小编也算是一个重度用户,看着一直被偷的能量总想以德服人。今天就用 Python + Appium 写一个自动收取能量的脚本,完成之后再也没人能从小编手上将能量偷走了
启动入口
还不会使用 Appium 的小伙伴可以先看看本公众号上的《解放双手,提高生产力,这款神器你值得拥有》学习和使用 Appium
下面代码是支付宝的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | fromappiumimportwebdriverfromselenium.webdriver.common.byimportBy fromselenium.webdriver.support.uiimportWebDriverWait fromappium.webdriver.common.touch_actionimportTouchAction fromselenium.webdriver.supportimportexpected_conditionsasEC desired_capabilities={ 'platformName':'Android',# 操作系统 'deviceName':'2a254a02',# 设备 ID 'platformVersion':'10.0.10',# 设备版本号,在手机设置中查看 'appPackage':'com.eg.android.AlipayGphone',# app 包名 'appActivity':'AlipayLogin',# app 启动时主 Activity 'noReset':True# 是否保留 session 信息 避免重新登录 } driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_capabilities) # 设置等待超时时间 wait=WebDriverWait(driver,60)
|
点击进入蚂蚁森林
支付宝上的蚂蚁森林的图标按钮位置每个人按照各自的习惯都不相同,小编的图标位置在全部-->最近使用
里面,可以用蚂蚁森林
文字找到图标并点击
1 2 3 4 5 | # 点击全部图标wait.until(EC.element_to_be_clickable((By.ID,'com.alipay.android.phone.openplatform:id/more_app_icon'))).click()# 找到蚂蚁森林 wait.until(EC.element_to_be_clickable((By.XPATH,'//android.widget.TextView[contains(@text, "蚂蚁森林")]'))).click() time.sleep(1)
|
收集能量
在蚂蚁森林中并不能通过用 id 的方式定位到能量球,只能用在能量球可能出现的区域用坐标点击,start_x,end_x,start_y,end_y 是这个区域左上角和右下角的坐标位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 获取手机屏幕宽高width=int(driver.get_window_size()['width'])height=int(driver.get_window_size()['height']) # 收取能量 defcollect_energy(driver,width,height): # 能量球可能出现的区域坐标 start_x=150 end_x=900 start_y=540 end_y=900 forxinrange(start_x,end_x,50): foryinrange(start_y,end_y,50): x_scale=int((int(x)/width)*width) y_scale=int((int(y)/height)*height) # 点击指定坐标 TouchAction(driver).press(x=x_scale,y=y_scale).release().perform() print('能量收取完毕')
|
收取好友能量
自己的能量收取完之后,点击 找能量
进入好友的蚂蚁森林收取好友的能量,直到出现返回我的森林
页面
1 2 3 4 5 6 7 8 9 10 11 12 13 | defsearch_energy(driver,width,height):x=int((int(1000)/width)*width) y=int((int(1550)/height)*height) # 点击指定坐标 TouchAction(driver).press(x=x,y=y).release().perform() time.sleep(1) is_collected=is_element_exist_by_xpath(driver,'//android.widget.Button[contains(@text, "返回我的森林")]') ifis_collected: print('能量全部收集完毕') return collect_energy(driver,width,height) search_energy(driver,width,height)
|
总结
用 Appium 很简单的就将蚂蚁森林的能量球自动化了,看完这篇文章后希望小伙伴可以活学活用将其他 APP 应用中的重复的操作也自动化,省事又省力
示例代码:https://github.com/JustDoPython/python-examples/tree/master/moumoubaimifan/AntForest
以上是 用 Appium 自动收取蚂蚁森林能量 的全部内容,
来源链接:
utcz.com/a/129839.html