#!/usr/bin/env python
#coding=utf-8
# TODO: modify class sanguo according to the following idea.
# sanguo这个类只提供所有的公共事务,而各自私有的事务由command内部实现
import SanguoPAMIE
import time
import random
import re
import sys
import math
import sqlite3
from sanguolib.toolkit import List
from sanguolib.Database import db
class sanguo:
def __init__(self):
self.cities = []
self.resBuildings = []
self.cityBuildings = []
self.ie = SanguoPAMIE.PAMIE()
self.ie.navigate("http://60.28.208.245/#")
self.db = db()
self.nav=[]
self.tries = 3
self._init()
def _init(self):
#初始化内部信息
self._waitLoading()
#服务器时间
self.time = self.now()
#士兵的速度
self.speed = {'wei':[6,5,7,14,10,4,3,4,5,16,6,14],
'shu':[7,7,6,10,9,4,3,4,5,9,7,7],
'wu':[7,6,19,16,13,4,3,5,5,17,7,7],}
#国家
self.tribe = self._tryAction(self._initTribe)
#操作的城市
self.selectedCity = self._tryAction(self._getTagInnerTextById,'span','village_name')
#操作城市的坐标
self.selectedCityCoord = self._tryAction(self._getSelectedCityCoord)
#TODO: 获得虎贲的研究数据
self.huben = [2,0,0,19,0,0,0,0,0,0,0,0,0,0]
def now(self):
#获得服务器时间
time = [0,0,0]
try:
t = self.ie.linkGet('servTime').innerText.split(":")
time = t
except:
pass
return time
def checkRandomEvent(self):
'''处理特殊事件
Returns:
True for handled successfully, else False.
'''
return self._tryAction(self._checkRandomEvent)
def clickLinkByInnerText(self,innerText):
'''click the link according to it's innerText
Parameters:
innerText
<a>innerText</a>
Returns:
True on success, else False.
'''
return self._tryAction(self._clickLinkByInnerText,innerText)
def clickNavButton(self,id):
'''点击导航栏:0-7
资源,城郭,地图,联盟,消息,政略,任务,商场
Returns:
True on success, else False
'''
self._waitLoading()
if id == 0:
return self.clickLinkByInnerText(u'资源')
elif id == 1:
return self.clickLinkByInnerText(u'城郭')
elif id == 2:
return self.clickLinkByInnerText(u'地图')
elif id == 3:
return self.clickLinkByInnerText(u'联盟')
elif id == 4:
return self.clickLinkByInnerText(u'消息')
elif id == 5:
return self.clickLinkByInnerText(u'政略')
elif id == 6:
return self.clickLinkByInnerText(u'任务')
elif id == 7:
return self.clickLinkByInnerText(u'商城')
def clickCityBuildByName(self, name):
'''按照名称来点击城郭中的建筑,只点击按照序号出现的第一个符合条件的建筑
'''
self._waitLoading()
if self.checkRandomEvent() and self._initCityBuilding():
for i in self.cityBuildings:
if name == i[0]:
return self._tryAction(self.ie.elementClick,i[-1])
elif self.checkRandomEvent() and self.clickNavButton(1) and self._initCityBuilding():
for i in self.cityBuildings:
if name == i[0]:
return self._tryAction(self.ie.elementClick,i[-1])
return False
def clickCityBuildByID(self,id):
'''点击城郭中的建筑,城墙 id = 0, 内政厅 id = 11,
其余的建筑可以随便放
'''
self._waitLoading()
if self.checkRandomEvent() and self._initCityBuilding():
return self._tryAction(self.ie.elementClick,self.cityBuildings[id][-1])
elif self.checkRandomEvent() and self.clickNavButton(1) and self._initCityBuilding():
return self._tryAction(self.ie.elementClick,self.cityBuildings[id][-1])
return False
def clickResourceBuilding(self,id):
'''点击资源田,资源田是按照格子的序号来区别的:
class="resources resources_6"
'''
self._waitLoading()
if self.checkRandomEvent() and self._initResourceBuilding():
return self._tryAction(self.ie.elementClick,self.resBuildings[id][-1])
elif self.checkRandomEvent() and self.clickNavButton(0) and self._initResourceBuilding():
return self._tryAction(self.ie.elementClick,self.resBuildings[id][-1])
return False
def getSelectedCity(self):
''' return the selected town's name.
'''
self._waitLoading()
#return self._tryAction(self._getTagInnerTextById,'span','citiesname')
return self._tryAction(self._getTagInnerTextById,'span','village_name')
def getSelectedCityCoord(self):
'''获得目前操作城市的坐标
'''
self._waitLoading()
return self._tryAction(self._getSelectedCityCoord)
def getTribe(self):
'''获得账户的国家属性
'''
self._waitLoading()
return self._tryAction(self._getTribe)
def getResourceInfoOfSelectedCity(self):
'''get Resource information of selected city.
'''
self._waitLoading()
return self._tryAction(self._getResourceInfoOfSelectedCity)
def _getTaskList(self):
'''获得本城任务列表的相关信息
'''
self._waitLoading()
military, admin = self.ie.elementGetChildren(self.ie.divGet('task_list'),False)
admins = self.ie.elementGetChildren(admin,False)[-3:]
print ads[0].innerText
print ads[1].innerText
techs = ie.elementGetChildren(ads[2],False)
for t in techs:
print t.id, t.style.getAttribute('display')
def _getSoldierList(self):
'''获得本城驻兵列表
'''
self._waitLoading()
soldier_list = self.ie.divGet('soldier_list')
p = self.ie.elementGetChildren(soldier_list,False)[0]
s = self.ie.elementGetChildren(p,False)[-1].innerText
return s.split('\r\n')
def _getU(s):
try:
ss = int(s)
return ss
except:
return s
def _getS(s):
ss = ""
try:
for i in s:
ss+=_getU(i)
return ss
except:
return ss
def _getI(s):
ii = 0
try:
for i in s:
ii=ii*10+_getU(i)
return ii
except:
return ii
def _getAll(s):
pass
def changeCity(self,id):
'''变更目前操作的城镇
'''
self._waitLoading()
if self._initCities():
return self._tryAction(_changeCity,id)
return False
def getRightFloatCityInfo(self):
'''
'''
self._waitLoading()
return self._tryAction(self._getRightFloatCityInfo)
def initRightFloatButtons(self):
'''Right Float Buttons: 比如建筑升级,使用国库等功能
'''
self._waitLoading()
Sanguo.rar_sanguo_三国风云_自动化测试
版权申诉
95 浏览量
2022-09-22
18:13:44
上传
评论
收藏 6KB RAR 举报
JonSco
- 粉丝: 66
- 资源: 1万+
最新资源
- SSCMS登录模块需要的JS文件
- JSP网络购物中心毕业设计(源代码+论文).rar
- 白盒测试报告.docx
- 基于LM5117芯片评估开发板硬件参考设计(原理图+PCB)+中英文数据手册资料.zip
- 照片批量重命名软件(文件批量修改图片文件名)
- app.apk
- 人工智能(AI)是计算机科学的一个分支,旨在开发和应用能够模拟、延伸和扩展人类智能的理论、方法和技术,包括机器人、语言识别、图像
- 嵌入式与物联网开发是当今信息技术领域的两大重要分支,它们相互交织,共同推动着智能化时代的进步 嵌入式开发主要关注在嵌入式操作
- 网络安全,这一看似高深莫测的领域,实则与我们每个人的生活息息相关
- 毕业设计基于深度学习的视觉问答系统源码+文档说明+答辩PPT.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈