前言
到第三篇,终于可以进入到游戏到庭院里面了。。
实现步骤:
进入游戏
更新界面
进入到app的第一个页面,会监测有没有自动更新。仔细看inspector就会发现,这整个页面是一个图层,选button什么的都看不到。这个时候就需要我们截图然后用图像识别技术来确定元素了。
新建一个images文件夹,把确定截图截下来,放到文件夹里面。我用的是1920*1080的手机,命名后面都添加了分辨率的识别标志。
Paste_Image.png然后写代码,就可以点到这个确定进入下一个页面了。
driver.click_image(u'./images/confirm.1920x1080.png', timeout=5, safe = True)
播放视频界面
来到视频界面是可以通过点击屏幕直接跳过的,很简单,随便点屏幕上的哪个点:
driver.click(150,150)
公告界面
游戏中间又有公告,我们需要监测到公告然后把它关掉。这里的操作步骤和点击确定界面是一样的。先截图,然后操作点那个叉叉
进入游戏界面
点完公告,程序会loading一会,这里需要10s左右,可以设置一个sleep函数吧。然后截图找元素,点击进入游戏
点击屏幕
进入游戏点完了还要再点击一遍屏幕才能进入游戏界面。
<code>driver.click(150,150)</code>这个函数没有等待时间,往往运行到这里的时候页面还没加出来,所有以让程序再睡一会儿吧。。
整体实现
import atx
import time
driver = atx.connect('http://localhost:8100',platform='ios')
driver.start_app('com.netease.onmyoji')
driver.click_image(u'./images/confirm.1920x1080.png', timeout=5, safe = True)
driver.click(150,150)
driver.click_image(u'./images/cancelAnnouncement.1920x1080.png', timeout=5, safe = True)
time.sleep(10)
driver.click_image(u'./images/login.1920x1080.png', timeout=5, safe = True)
time.sleep(2)
driver.click(150,150)
print ("已进入庭院")
发现的问题: 图片的路径还要带 <code>./images/</code>,很明显这不是很方便。遵循着小步重构的原则,我们要图片等统一路径设置给解决了:<code>driver.image_path = [".", "images"]</code>,看源码是可以这么解决的,但是还有问题呀。。要炸了,明天再写
def get_applications_in_country(l):
text = """Australia Brasil Canada China Chile Ecuador Germany India Italy Singapore Spain Turkey UK USA Uganda Thailand"""
countries = text.strip().split()
country = random.choice(countries)
params = {
"country": country,
"status": "active"
}
with l.client.get("/candidates", params=params, headers={"x-api-key": API_KEY}, catch_response=True) as response:
if "errorMessage" in response.text:
response.failure("Error occurs in response: %s" % response.text)
class UserBehavior(TaskSet):
tasks = {
get_applications_in_country: 1
}
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 2000
max_wait = 5000
网友评论