Tedious is evil.
- 前段时间迷上了这个游戏,一时疯狂练了太多小号,以至于现在被每天的请安膜拜压垮了。想到日后肯定不会再有那么多时间刷小号,就干脆写个自动化的脚本。
- 首先要知道这游戏除了小程序外,还有网页版,在电脑上登录网页版,利用 selenium 即可实现账号切换。
- 模拟登录的元素定位通过分析网页代码得知,如网页代码有更新,必须进行相应的更改。
- 整个游戏的主体是一个用 egret 开发的h5,已经超出了我的能力范围,因此不考虑继续深入,选择在固定位置点击实现请安膜拜,具体按键的坐标通过pymouse得到。
- 根据响应速度,每步的延迟在 1-5s 之间。
from selenium import webdriver
from pymouse import PyMouse
import time
driver=webdriver.Chrome()
driver.get('http://gamexd.fire2333.com/home/ac?action=/home/game/a/5100013/g/200125/pt/5100074')
m=PyMouse()
class Routine(object):
"""start routine of the game"""
def __init__(self):
self.username = current_account
self.password = "thisispassword"
def login(self):
js = 'document.getElementById("menu-login").click()'
driver.execute_script(js)
time.sleep(1)
js = 'document.getElementsByClassName("changeAccount")[0].click();'
driver.execute_script(js)
time.sleep(1)
driver.find_element_by_class_name("phone").send_keys(self.username)
driver.find_element_by_class_name("password").send_keys(self.password)
time.sleep(1)
js = 'document.getElementsByClassName("enter")[0].click();'
driver.execute_script(js)
time.sleep(5)
m.click(951, 254) # 关闭公告
time.sleep(3)
m.click(761, 666) # 进入游戏
time.sleep(8)
def qingan(self):
m.click(599, 234) # 出宫
time.sleep(2)
m.click(862, 351) # 中宫
time.sleep(2)
m.click(820, 406) # 请安
time.sleep(2)
m.click(868, 354) # 华贵妃
time.sleep(2)
m.click(786, 816) # 请安
time.sleep(2)
m.click(594, 153) # 返回中宫
time.sleep(2)
m.click(594, 153) # 返回主界面
time.sleep(2)
def mobai(self):
m.click(730, 820) # 排行榜,第一个默认势力榜
time.sleep(2)
m.click(918, 810) # 膜拜
time.sleep(2)
m.click(918, 810) # 返回
time.sleep(2)
m.click(674, 198) # 剧情榜
time.sleep(2)
m.click(918, 810) # 膜拜
time.sleep(2)
m.click(918, 810) # 返回
time.sleep(2)
m.click(748, 200) # 随从榜
time.sleep(2)
m.click(918, 810) # 膜拜
time.sleep(2)
m.click(918, 810) # 返回
time.sleep(2)
m.click(807, 202) # 亲密榜
time.sleep(2)
m.click(918, 810) # 膜拜
time.sleep(2)
m.click(918, 810) # 返回
time.sleep(2)
m.click(881, 195) # 服装榜
time.sleep(2)
m.click(918, 810) # 膜拜
time.sleep(2)
m.click(918, 810) # 返回
time.sleep(2)
m.click(942, 196) # 魅力榜
time.sleep(2)
m.click(918, 810) # 膜拜
time.sleep(2)
m.click(918, 810) # 返回
for i in range(10,90):
print('usr%d'%i+' start')
current_account='usr%d'%i
current_routine=Routine()
current_routine.login()
current_routine.qingan()
current_routine.mobai()
print('usr%d'%i+' done')
- 用pymouse获取坐标的方法
m=PyMouse()
a= m.position()
print(a)