def statistics_panel(self): """统计面板""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.沙盘[0], screen_point.沙盘[1]) m1.click(self.BECivilWin, '', screen_point.统计面板[0], screen_point.统计面板[1]) sleep(2) w0.controlClick("[CLASS:Button; INSTANCE:29]") sleep(2) w0.controlClick("[CLASS:Button; INSTANCE:29]") else: raise Exception("未识别BECivil窗口")
def delete_contract_managemeng(self): """删除合同""" if WinControl(self.IMWin).exists(): m1 = MouseControl() m1.click(self.IMWin, '', screen_point.工程管理[0], screen_point.工程管理[1]) m1.click(self.IMWin, '', screen_point.合同管理[0], screen_point.合同管理[1]) m1.click(self.IMWin, '', screen_point.删除施工合同[0], screen_point.删除施工合同[1]) m1.click(self.IMWin, '', screen_point.确认删除合同[0], screen_point.确认删除合同[1]) else: raise Exception('没有检测到IM窗口!')
def refresh_data(self): """刷新数据""" w0 = WinControl(self.BECivilWin) if w0.exists(): m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.沙盘[0], screen_point.沙盘[1]) m1.click(self.BECivilWin, '', screen_point.刷新数据[0], screen_point.刷新数据[1]) sleep(4) if w0.exists(): w0.wait(3) t = w0.getPos() if t == (838, 438, 1082, 602): pass else: raise Exception('Something went wrong.') w0.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("数据刷新未完成") else: raise Exception("未识别BECivil窗口")
def add_form(self, y1=515, message='封面'): """添加表单用""" w0 = WinControl("添加表单") if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click('添加表单', '', 990, 495) sleep(1) m1.click('添加表单', '', 990, y1) sleep(0.5) m1.click('添加表单', '', 990, 530) autoit.send(message) sleep(0.5) w0.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception('添加表单未成功')
def edit_contract_management(self): """编辑合同""" if WinControl(self.IMWin).exists(): m1 = MouseControl() m1.click(self.IMWin, '', screen_point.编辑施工合同[0], screen_point.编辑施工合同[1]) sleep(3) m1.click(self.IMWin, '', screen_point.施工负责人[0], screen_point.施工负责人[1]) autoit.send(self.message12) m1.click(self.IMWin, '', screen_point.总监理工程师[0], screen_point.总监理工程师[1]) autoit.send(self.message13) m1.click(self.IMWin, '', screen_point.项目总工[0], screen_point.项目总工[1]) autoit.send(self.message14) m1.click(self.IMWin, '', screen_point.保存[0], screen_point.保存[1]) else: raise Exception('没有检测到IM窗口!')
def start_IM(self): """启动IM""" if WinControl(self.BECivilWin).exists(): m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.资料[0], screen_point.资料[1]) sleep(1) m1.click(self.BECivilWin, '', screen_point.质检计量[0], screen_point.质检计量[1]) # 等待IM界面 w1 = WinControl(self.IMWin) w1.wait(30) # 关闭筑业升级进程 if autoit.process_exists("ZY.Downloader.exe"): autoit.process_close("ZY.Downloader.exe") else: pass w1.setState(3) else: print('BECivil未启动,无法启动IM。')
def setting(self): """设置""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.任务[0], screen_point.任务[1]) m1.click(self.BECivilWin, '', screen_point.设置[0], screen_point.设置[1]) ''' m1.click(self.BECivilWin, '', screen_point.设置[0], 140)# 仪器信息 sleep(1) w1 = WinControl('仪器信息') if w1.exists(): w1.wait(3) w1.controlClick('[CLASS:Button; INSTANCE:1]') sleep(1) m1.click('仪器信息', '', 910, 650) autoit.send('测试脚本用添加仪器') m1.click('仪器信息', '', 1080, 650) autoit.send('134652') autoit.send("{ENTER}") m1.click('仪器信息', '', 1180, 370)# 关闭仪器信息 else: raise Exception('未打开仪器信息窗口') sleep(1) m1.click(self.BECivilWin, '', screen_point.设置[0], screen_point.设置[1]) ''' # 点位图管理 m1.click(self.BECivilWin, '', screen_point.设置[0], 160) sleep(2) w2 = WinControl('点位图管理') if w2.exists(): w2.wait(3) w2.controlClick("[CLASS:Button; INSTANCE:1]") sleep(1) # 截图点位图 m1.click(self.BECivilWin, '', 710, 390, button='right') m1.click(self.BECivilWin, '', 660, 405) sleep(2) w3 = WinControl('点位图命名') if w3.exists(): w3.wait(3) w3.controlSetText('[CLASS:Edit; INSTANCE:1]', '测试脚本用点位图') sleep(1) w3.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('未打开点位图命名窗口') sleep(1) # 关闭点位图管理 m1.click('点位图管理', '', 1336, 183) else: raise Exception('未打开点位图管理窗口') else: raise Exception('未识别市政窗口')
def upload_project(self, projectname): """上传工程""" w0 = WinControl(self.BECivilWin) if w0.exists(): m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.系统[0], screen_point.系统[1]) m1.click(self.BECivilWin, '', screen_point.上传工程[0], screen_point.上传工程[1]) w1 = WinControl("打开") sleep(4) if w1.exists(): w1.wait(3) w1.setState(3) # 输入保存上传工程的地址 m1.click('打开', '', 820, 45) w1.controlSetText('[CLASS:Edit; INSTANCE:2]', self.uploadaddress) autoit.send("{ENTER}") sleep(2) w1.controlSetText('[CLASS:Edit; INSTANCE:1]', projectname) w1.controlClick('[CLASS:Button; INSTANCE:1]') sleep(2) w2 = WinControl("上传工程") sleep(2) if w2.exists(): w2.wait(3) w2.controlClick('[CLASS:Button; INSTANCE:3]') sleep(3) w3 = WinControl("上传位置") if w3.exists(): w3.wait(3) # 选择IM测试 m1.click(self.BECivilWin, '', 940, 435) sleep(1) w3.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception('未选中上传位置窗口') sleep(1) w2.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('未选中上传工程窗口') else: raise Exception('未选中打开窗口') sleep(22) w5 = WinControl("Luban Explorer(Civil)提醒您") w5.wait(60) if w5.exists(): pass else: raise Exception("上传成功提示未显示") else: raise Exception("未识别BECivil窗口")
def open_project(self, projectname): """打开工程""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.系统[0], screen_point.系统[1]) m1.click(self.BECivilWin, '', screen_point.打开工程[0], screen_point.打开工程[1]) sleep(3) w1 = WinControl("选择工程") if w1.exists(): w1.wait(3) w1.setState(3) # 输入名字搜索 m1.click("选择工程", '', 50, 35) autoit.send(projectname) sleep(5) # 打开测试脚本用土建工程 m1.click(self.BECivilWin, '', 92, 133, clicks=3) else: raise Exception("未选中选择工程窗口") sleep(10) # 使视图视角变为俯视视角 m1.click(self.BECivilWin, '', 440, 440, button='right') m1.click(self.BECivilWin, '', 490, 475) else: raise Exception("未识别BECivil窗口")
def start_BECivli(self): """登录BECivil""" # 判断屏幕分辨率是否为1920*1080 if verifySystemMetrics(1920, 1080) == True: pass else: raise Exception("分辨率不为1920*1080,请更改分辨率") # 判断Shell、BECivil和IM是否存在,若存在则退出 processes = [ ProcessControl(self.IMProcess), ProcessControl(self.BECivilProcess), ProcessControl(self.ShellProcess) ] for process in processes: if process.exists(): process.close() # 启动软件以及登录 try: autoit.run(self.path) except Exception as e: print(e) print('软件安装路径有误,或者软件安装路径中有中文,\nstart_APP函数中path变量前需要加r!') else: w1 = WinControl('用户登录') w1.wait() if w1.exists(): w1.controlSetText('[CLASS:Edit; INSTANCE:1]', self.username) w1.controlSetText('[CLASS:Edit; INSTANCE:2]', self.password) w1.controlSetText('[CLASS:Edit; INSTANCE:3]', self.ip) w1.controlClick('Button1') # 等待BECivil界面 w2 = WinControl(self.BECivilWin) w2.wait(25) w2.setState(3) sleep(1) """
def project_time(self): """工程时间""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.沙盘[0], screen_point.沙盘[1]) m1.click(self.BECivilWin, '', screen_point.工程时间[0], screen_point.工程时间[1]) sleep(2) w1 = WinControl("工程时间") if w1.exists(): w1.wait(3) w1.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未打开工程时间窗口") else: raise Exception("未识别BECivil窗口")
def measure_point_management(self): """测点管理""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.任务[0], screen_point.任务[1]) m1.click(self.BECivilWin, '', screen_point.测点管理[0], screen_point.测点管理[1]) sleep(1) # 无法识别测点列表窗口 # 添加 m1.click(self.BECivilWin, '', 1185, 270) sleep(1) w1 = WinControl('新建测点') if w1.exists(): w1.wait(3) # 选择深层位移 m1.click('新建测点', '', 980, 445) sleep(1) m1.click('新建测点', '', 980, 515) sleep(1) # 测点名称 m1.click('新建测点', '', 980, 480) autoit.send('测点名称123') sleep(1) # 选择位置 m1.click('新建测点', '', 850, 520) sleep(1) m1.click(self.BECivilWin, '', 750, 620) m1.click(self.BECivilWin, '', 750, 620, button='right') m1.click(self.BECivilWin, '', 710, 635) sleep(1) w1.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception('未打开新建测点窗口') sleep(2) # 数据读取 m1.click(self.BECivilWin, '', 1380, 270) sleep(1) w2 = WinControl("打开") if w2.exists(): w2.wait(3) m1.click('打开', '', 940, 45) w2.controlSetText('[CLASS:Edit; INSTANCE:2]', self.uploadaddress) autoit.send("{ENTER}") sleep(1) w2.controlSetText('[CLASS:Edit; INSTANCE:1]', '测点数据读取模板.xlsx') w2.controlClick('[CLASS:Button; INSTANCE:1]') sleep(2) w3 = WinControl('数据读取设置') if w3.exists(): w3.wait(3) # 数据表名 m1.click('数据读取设置', '', 980, 435) sleep(1) # 深层位移 m1.click('数据读取设置', '', 980, 455) sleep(1) # 数据类型 m1.click('数据读取设置', '', 980, 470) sleep(1) # 深层位移 m1.click('数据读取设置', '', 980, 597) sleep(1) w3.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('未打开数据读取设置窗口') else: raise Exception('未识别打开窗口') sleep(1) # 关闭测点管理 m1.click(self.BECivilWin, '', screen_point.测点管理[0], screen_point.测点管理[1]) else: raise Exception("未识别市政窗口")
def manage_working_set(self): """管理工作集""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.系统[0], screen_point.系统[1]) m1.click(self.BECivilWin, '', screen_point.管理工作集[0], screen_point.管理工作集[1]) sleep(2) w1 = WinControl('管理工作集') if w1.exists(): w1.wait(3) #w1.setState(3) w1.controlSetText('[CLASS:Edit; INSTANCE:1]', '测试脚本用创建工作集') sleep(3) # 选中要删除的工作集 m1.click('管理工作集', '', 880, 390) sleep(2) # 点击删除 m1.click('管理工作集', '', 870, 760) sleep(2) if w0.exists(): sleep(2) t1 = w0.getPos() if t1 == (844, 438, 1076, 602): pass else: raise Exception('Something went wrong.') w0.controlClick('[CLASS:Button; INSTANCE:1]') sleep(3) if w0.exists(): t2 = w0.getPos() if t2 == (880, 438, 1040, 602): pass else: raise Exception('Something went wrong.') sleep(2) if w0.exists(): t3 = w0.getPos() if t3 == (880, 438, 1040, 602): pass else: raise Exception('Something went wrong.') w0.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('未弹出删除确认框') else: raise Exception('未弹出删除成功选择框') else: raise Exception('未弹出删除工作集选择框') sleep(2) # 关闭管理工作集窗口 m1.click('管理工作集', '', 1114, 263) else: raise Exception("未弹出管理工作集窗口") else: raise Exception("未识别BECivil窗口")
def add_monitor(self): """ """ w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.沙盘[0], screen_point.沙盘[1]) m1.click(self.BECivilWin, '', screen_point.沙盘模式[0], screen_point.沙盘模式[1]) sleep(2) # 使视图视角变为俯视视角 m1.click(self.BECivilWin, '', 440, 440, button='right') m1.click(self.BECivilWin, '', 490, 475) sleep(2) m1.click(self.BECivilWin, '', screen_point.插入监控[0], screen_point.插入监控[1]) w1 = WinControl('插入监控') sleep(2) if w1.exists(): w1.wait(3) # 关联监控 w1.controlClick('[CLASS:Button; INSTANCE:3]') sleep(8) w2 = WinControl('关联监控') if w2.exists(): w2.wait(3) m1.click('关联监控', '', 623, 375) sleep(2) w2.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未打开关联监控窗口") sleep(1) # 详细位置 w1.controlClick("[CLASS:Button; INSTANCE:4]") sleep(1) m1.click(self.BECivilWin, '', 1050, 520) sleep(1) m1.click(self.BECivilWin, '', 1050, 520, button='right') sleep(2) m1.click(self.BECivilWin, '', 1100, 535) sleep(1) if w1.exists(): w1.wait(3) w1.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未打开插入监控窗口") else: raise Exception("未打开插入监控窗口") sleep(2) if w0.exists(): w0.wait(3) t = w0.getPos() if t == (862, 438, 1058, 602): pass else: raise Exception('Something went wrong.') w0.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未显示插入监控成功窗口") else: raise Exception("未识别BECivil窗口")
def monitor_management(self): """监控管理""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.沙盘[0], screen_point.沙盘[1]) m1.click(self.BECivilWin, '', screen_point.监控管理[0], screen_point.监控管理[1]) sleep(1) w1 = WinControl("监控管理") if w1.exists(): w1.wait(3) # 监控查看 m1.click('监控管理', '', 1140, 300) sleep(7) w2 = WinControl("监控查看") if w2.exists(): w2.wait(3) w2.controlClick("[CLASS:Button; INSTANCE:3]") sleep(2) w2.controlClick("[CLASS:Button; INSTANCE:4]") else: raise Exception("未打开监控查看窗口") sleep(2) # 编辑监控 m1.click('监控管理', '', 1180, 300) sleep(2) w3 = WinControl("编辑监控") if w3.exists(): w3.wait(3) w3.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未打开编辑监控窗口") sleep(2) # 删除 m1.click('监控管理', '', 1260, 300) sleep(1) if w0.exists(): w0.wait(3) t = w0.getPos() if t == (845, 438, 1075, 602): pass else: raise Exception('Something went wrong.') w0.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未识别确认删除窗口") # 关闭监控管理窗口 m1.click('监控管理', '', 1360, 210) else: raise Exception('未识别监控管理窗口') else: raise Exception("未识别BECivil窗口")
def service_setting(self): """ 、服务设置""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.沙盘[0], screen_point.沙盘[1]) m1.click(self.BECivilWin, '', screen_point.服务设置[0], screen_point.服务设置[1]) sleep(1) w1 = WinControl("第三方监控服务设置") if w1.exists(): w1.wait(3) # 检测 w1.controlClick("[CLASS:Button; INSTANCE:1]") sleep(7) if w0.exists(): w0.wait(3) t1 = w0.getPos() if t1 == (880, 438, 1040, 602): pass else: raise Exception('Something went wrong.') w0.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未弹出检测成功窗口") sleep(2) # 确定 w1.controlClick("[CLASS:Button; INSTANCE:2]") sleep(7) if w0.exists(): w0.wait(3) t2 = w0.getPos() if t2 == (868, 438, 1052, 602): pass else: raise Exception('Something went wrong.') w0.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未弹出保存设置成功窗口") else: raise Exception("未弹出第三方监控服务设置") else: raise Exception("未识别BECivil窗口")
def monitoring_panel(self): """监控面板""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.沙盘[0], screen_point.沙盘[1]) m1.click(self.BECivilWin, '', screen_point.监控面板[0], screen_point.监控面板[1]) sleep(1) # 启用沙盘模式 if w0.exists(): w0.wait(3) t = w0.getPos() if t == (830, 438, 1090, 602): pass else: raise Exception('Something went wrong.') w0.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('未打开开启沙盘模式窗口') sleep(13) # 点击添加监控 m1.click(self.BECivilWin, '', 1800, 320) sleep(7) w1 = WinControl('添加监控') if w1.exists(): w1.wait(3) w1.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未弹出添加监控窗口") sleep(4) m1.click(self.BECivilWin, '', screen_point.沙盘模式[0], screen_point.沙盘模式[1]) else: raise Exception("未识别BECivil窗口")
def start_BECivil(self): """登录BECivil""" # 判断屏幕分辨率是否为1920*1080 if verifySystemMetrics(1920, 1080) == True: pass else: raise Exception("分辨率不为1920*1080,请更改分辨率") sleep(5) # 初始化登录环境 processes = [ ProcessControl(self.IMProcess), ProcessControl(self.BECivilProcess), ProcessControl(self.ShellProcess) ] for process in processes: if process.exists(): process.close() else: pass sleep(2) # 启动软件以及登录 try: autoit.run(self.path) except Exception as e: print(e) print('软件安装路径有误,或者软件安装路径中有中文,\nstart_APP函数中path变量前需要加r!') else: sleep(3) w1 = WinControl('用户登录') if w1.exists(): w1.wait() w1.controlSetText('[CLASS:Edit; INSTANCE:1]', self.username) w1.controlSetText('[CLASS:Edit; INSTANCE:2]', self.password) w1.controlSetText('[CLASS:Edit; INSTANCE:3]', self.ip) w1.controlClick('Button1') sleep(20) # 如果检测到升级则进行升级过程,若没有则pass w2 = WinControl("Luban Explorer(Civil)版本获取") if w2.exists(): w2.wait(60) print('>>>>>>>>检测到LubanBECivil正在升级') sleep(60) else: pass print('软件未升级') sleep(3) # 等待BECivil界面 w3 = WinControl(self.BECivilWin) w3.wait(60) if w3.exists(): #w3.wait(60) sleep(5) w4 = WinControl('启动提示') if w4.exists(): w4.wait(3) w4.controlClick('[CLASS:Button; INSTANCE:1]') print('软件弹出了启动提示') else: pass w3.wait(60) w3.setState(3) sleep(15) else: raise Exception("未识别BECivil打开的窗口") # 检测CO进程并退出 ps = [ ProcessControl(self.COProcess), ProcessControl(self.SuspernsionCtrlProcess) ] for p in ps: if p.exists(): p.wait(6) p.close() else: print("未启动鲁班协作") else: raise Exception("未打开用户登录窗口")
def quit_BECivil(self): """退出BECivil""" w0 = WinControl(self.BECivilWin) if w0.exists(): m1 = MouseControl() w0.wait(3) m1.click(self.BECivilWin, '', 1900, 13) if w0.exists(): w0.wait(3) t = w0.getPos() if t == (845, 438, 1075, 602): pass else: raise Exception('Something went wrong.') sleep(1) w0.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('未弹出确认关闭软件窗口') else: raise Exception('未识别BECivil打开的窗口') sleep(5) if w0.exists(): raise Exception('关闭软件未成功') else: pass
def sand_table_pattern(self): """沙盘模式""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.沙盘[0], screen_point.沙盘[1]) m1.click(self.BECivilWin, '', screen_point.沙盘模式[0], screen_point.沙盘模式[1]) sleep(2) w1 = WinControl('欢迎使用沙盘功能') if w1.exists(): w1.wait(3) w1.controlClick('[CLASS:Button; INSTANCE:3]') sleep(1) # 设置开工和竣工时间 m1.click('欢迎使用沙盘功能', '', 890, 640) sleep(3) w2 = WinControl('工程时间') if w2.exists(): w2.wait(3) w2.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('未能打开工程时间窗口') sleep(1) w1.controlClick('[CLASS:Button; INSTANCE:3]') sleep(2) # 设置监控服务 m1.click('欢迎使用沙盘功能', '', 830, 640) sleep(3) w3 = WinControl('第三方监控服务设置') if w3.exists(): w3.wait(3) # 选择对接平台 m1.click('第三方监控服务设置', '', 950, 460) m1.click('第三方监控服务设置', '', 950, 480) w3.controlSetText('[CLASS:Edit; INSTANCE:1]', self.messgae1) w3.controlSetText('[CLASS:Edit; INSTANCE:2]', self.messgae2) w3.controlSetText('[CLASS:Edit; INSTANCE:3]', self.messgae3) w3.controlSetText('[CLASS:Edit; INSTANCE:4]', self.messgae4) sleep(1) w3.controlClick('[CLASS:Button; INSTANCE:2]') sleep(12) if w0.exists(): w0.wait(3) t = w0.getPos() if t == (868, 438, 1052, 602): pass else: raise Exception('Something went wrong.') w0.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('未能成功设置监控服务') w1.controlClick('[CLASS:Button; INSTANCE:3]') sleep(1) w1.controlClick('[CLASS:Button; INSTANCE:3]') sleep(1) w1.controlClick('[CLASS:Button; INSTANCE:3]') sleep(1) w1.controlClick('[CLASS:Button; INSTANCE:3]') else: raise Exception('未能打开第三方监控服务设置') else: raise Exception('未能打开欢迎使用沙盘功能') else: raise Exception("未识别BECivil窗口")
def viewing_reports(self): """查看报表""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.数据[0], screen_point.数据[1]) m1.click(self.BECivilWin, '', screen_point.查看报表[0], screen_point.查看报表[1]) sleep(2) w1 = WinControl('报表(Civil)') if w1.exists(): w1.wait(3) # 条件统计 m1.click('报表(Civil)', '', 40, 70) sleep(1) w2 = WinControl('条件统计') if w2.exists(): w2.wait(3) # 勾选全部楼层 m1.click('条件统计', '', 740, 410) sleep(1) # 勾选全部构件 m1.click('条件统计', '', 975, 410) sleep(1) w2.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未打开条件统计窗口") # 选中构件 m1.click('报表(Civil)', '', 860, 260, clicks=2) # 点击反查 m1.click('报表(Civil)', '', 100, 70) sleep(2) w3 = WinControl('反查结果') if w3.exists(): w3.wait(3) sleep(2) w3.controlClick('[CLASS:Button; INSTANCE:3]') else: raise Exception("未打开反查结果窗口") sleep(1) # 打印预览 m1.click('报表(Civil)', '', 290, 70) sleep(2) w4 = WinControl('打印预览 - 你的报表标题') if w4.exists(): w4.wait(3) # 退出打印预览 m1.click('打印预览 - 你的报表标题', '', 1890, 10) else: raise Exception('未打开打印预览窗口') sleep(2) # 导出Excel m1.click('报表(Civil)', '', 360, 70) sleep(2) w5 = WinControl('另存为') if w5.exists(): w5.wait(3) w5.setState(3) m1.click('另存为', '', 860, 45) w5.controlSetText('[CLASS:Edit; INSTANCE:2]', self.downloadaddress) autoit.send("{ENTER}") sleep(2) w5.controlClick('[CLASS:Button; INSTANCE:1]') sleep(2) w6 = WinControl('确认另存为') if w6.exists(): w6.wait(3) w6.controlClick('[CLASS:Button; INSTANCE:1]') else: pass else: raise Exception("未打开另存为窗口") sleep(15) w7 = WinControl('测试脚本用安装工程.YS_清单定额汇总表.xls [兼容模式] - Excel') if w7.exists(): w7.wait(3) w7.setState(3) sleep(3) # 关闭自动打开的Excel m1.click('测试脚本用安装工程.YS_清单定额汇总表.xls [兼容模式] - Excel', '', 1905, 12) else: raise Exception("未打开Excel") sleep(2) # 导出PDF m1.click('报表(Civil)', '', 435, 70) sleep(2) w8 = WinControl('另存为') if w8.exists(): w8.wait(3) w8.setState(3) m1.click('另存为', '', 860, 45) w8.controlSetText('[CLASS:Edit; INSTANCE:2]', self.downloadaddress) autoit.send("{ENTER}") sleep(2) w5.controlClick('[CLASS:Button; INSTANCE:1]') sleep(2) w9 = WinControl('确认另存为') if w9.exists(): w9.wait(3) w9.controlClick('[CLASS:Button; INSTANCE:1]') else: pass else: raise Exception("未打开另存为窗口") sleep(7) w10 = WinControl( '你的报表标题 - 测试脚本用安装工程.YS_清单定额汇总表.pdf - Mozilla Firefox') if w10.exists(): w10.wait(3) w10.setState(3) sleep(3) # 关闭自动打开的Excel m1.click( '你的报表标题 - 测试脚本用安装工程.YS_清单定额汇总表.pdf - Mozilla Firefox', '', 1893, 7) sleep(2) w11 = WinControl("确认关闭") if w11.exists(): w11.wait(3) autoit.send("{ENTER}") else: raise Exception("未打开PDF") sleep(1) # 报表管理 m1.click('报表(Civil)', '', 500, 70) sleep(2) w12 = WinControl('报表管理') if w12.exists(): w12.wait(3) w12.controlClick('[CLASS:Button; INSTANCE:4]') sleep(2) w13 = WinControl('打开') if w13.exists(): w13.wait(3) m1.click('打开', '', 1030, 45) w13.controlSetText('[CLASS:Edit; INSTANCE:2]', self.uploadaddress) sleep(1) autoit.send("{ENTER}") w13.controlSetText('[CLASS:Edit; INSTANCE:1]', '测试脚本用上传报表.xlsx') sleep(1) w13.controlClick("[CLASS:Button; INSTANCE:1]") sleep(5) w14 = WinControl('上传报表') if w14.exists(): w14.wait(3) w14.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('未打开上传报表窗口') else: raise Exception("未打开打开窗口") # 关闭报表管理 m1.click('报表管理', '', 1314, 243) sleep(2) else: raise Exception('未打开报表管理窗口') # 关闭报表窗口 m1.click('报表(Civil)', '', 1895, 5) else: raise Exception('未打开报表(Civil)窗口') else: raise Exception('未识别BECivil窗口')
def information_management(self): """资料管理""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.资料[0], screen_point.资料[1]) m1.click(self.BECivilWin, '', screen_point.资料管理[0], screen_point.资料管理[1]) w1 = WinControl('资料管理') sleep(3) if w1.exists(): w1.wait(3) w1.setState(3) # 关联 m1.click('资料管理', '', 1695, 160) sleep(1) w2 = WinControl(' 设置资料信息') if w2.exists(): w2.wait(3) w2.controlClick('[CLASS:Button; INSTANCE:6]') m1.click(' 设置资料信息', '', 805, 440) sleep(2) w2.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('未打开设置资料信息窗口') sleep(2) w1.setState(3) # 反查 m1.click('资料管理', '', 1785, 160) sleep(1) if w0.exists(): w0.wait(3) t1 = w0.getPos() if t1 == (0, 0, 1920, 1040): pass else: raise Exception('Something went wrong.') sleep(2) # 退出反查 m1.click(self.BECivilWin, '', 1100, 490, button='right') sleep(0.5) m1.click(self.BECivilWin, '', 1170, 505) sleep(2) if w1.exists(): w1.wait(3) w1.setState(3) else: raise Exception('退出反查失败') else: raise Exception('反查失败') sleep(2) # 下载 m1.click('资料管理', '', 1835, 160) sleep(2) w3 = WinControl('另存为') if w3.exists(): w3.wait(3) m1.click('另存为', '', 1030, 45) w3.controlSetText('[CLASS:Edit; INSTANCE:2]', self.downloadaddress) sleep(1) w3.controlClick('[CLASS:Button; INSTANCE:1]') sleep(1) w4 = WinControl('确认另存为') if w4.exists(): w4.wait(3) w4.controlClick('[CLASS:Button; INSTANCE:1]') else: pass else: raise Exception('未打开另存为窗口') # 勾选上传资料 m1.click('资料管理', '', 425, 160) sleep(1) # 关联 w1.controlClick('[CLASS:Button; INSTANCE:6]') sleep(1) if w2.exists(): w2.wait(3) w2.controlClick('[CLASS:Button; INSTANCE:3]') sleep(2) w2.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('未打开设置资料信息窗口') sleep(3) w1.setState(3) # 勾选上传资料 m1.click('资料管理', '', 425, 160) # 打印 w1.controlClick('[CLASS:Button; INSTANCE:7]') sleep(1) w5 = WinControl('打印') if w5.exists(): w5.wait(3) w5.controlClick('[CLASS:Button; INSTANCE:14]') else: raise Exception('未打开打印窗口') sleep(3) w1.setState(3) # 删除 w1.controlClick('[CLASS:Button; INSTANCE:8]') sleep(2) if w0.exists(): w0.wait(3) t2 = w0.getPos() if t2 == (844, 438, 1076, 602): pass else: raise Exception('Something went wrong.') w0.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('删除未成功') sleep(3) w1.setState(3) # 关闭资料管理窗口 m1.click('资料管理', '', 1905, 10) else: raise Exception('未打开资料管理窗口') else: raise Exception('未识别BECivil窗口')
def measure_report(self): """监测报告""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.任务[0], screen_point.任务[1]) m1.click(self.BECivilWin, '', screen_point.监测报告[0], screen_point.监测报告[1]) sleep(1) # 创建报告 m1.click(self.BECivilWin, '', 1190, 270) sleep(1) w1 = WinControl("新建报告") if w1.exists(): w1.wait(3) # 报告名称 m1.click('新建报告', '', 980, 400) autoit.send('测试脚本用报告') # 期号 m1.click('新建报告', '', 980, 440) autoit.send('1') # 编号 m1.click('新建报告', '', 980, 480) autoit.send('123456') # 承包单位 m1.click('新建报告', '', 980, 570) autoit.send('测试脚本用承包单位') # 监理单位 m1.click('新建报告', '', 980, 615) autoit.send('测试脚本用监理单位') sleep(1) w1.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception('未打开新建报告窗口') # 点击名称 m1.click(self.BECivilWin, '', 1320, 340) sleep(2) w2 = WinControl("表单列表") if w2.exists(): w2.wait(3) w2.controlClick("[CLASS:Button; INSTANCE:1]") sleep(1) MissionFunctions().add_form() sleep(1) w2.controlClick("[CLASS:Button; INSTANCE:1]") sleep(1) MissionFunctions().add_form(565, '脚本测试用监测成果分析报告') m1.click('表单列表', '', 1260, 235) else: raise Exception('未打开表单列表窗口') # 点击编辑 m1.click(self.BECivilWin, '', 1800, 340) sleep(1) w3 = WinControl("编辑报告") if w3.exists(): w3.wait(3) m1.click('编辑报告', '', 960, 400) autoit.send('测试脚本用报告更改') sleep(1) w3.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未打开编辑报告窗口") # 点击导出 m1.click(self.BECivilWin, '', 1860, 340) sleep(1) w4 = WinControl('另存为') if w4.exists(): w4.wait(3) m1.click('另存为', '', 1030, 45) w4.controlSetText("[CLASS:Edit; INSTANCE:2]", self.downloadaddress) sleep(1) w4.controlClick('[CLASS:Button; INSTANCE:1]') sleep(1) w5 = WinControl('确认另存为') if w5.exists(): w5.wait(3) w5.controlClick("[CLASS:Button; INSTANCE:1]") else: pass sleep(2) if w0.exists(): w0.wait(3) t1 = w0.getPos() if t1 == (845, 438, 1075, 602): pass else: raise Exception('Something went wrong.') w0.controlClick("[CLASS:Button; INSTANCE:2]") else: pass else: raise Exception('未成功导出报告') sleep(2) # 全部勾选报告 m1.click(self.BECivilWin, '', 1172, 340) sleep(1) # 删除 m1.click(self.BECivilWin, '', 1290, 270) sleep(1) if w0.exists(): w0.wait(3) t2 = w0.getPos() if t2 == (845, 438, 1075, 602): pass else: raise Exception('Something went wrong.') w0.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception('删除报告失败') sleep(1) m1.click(self.BECivilWin, '', screen_point.监测报告[0], screen_point.监测报告[1]) else: raise Exception('未识别市政窗口')
def upload_picture(self): """ """ w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.沙盘[0], screen_point.沙盘[1]) m1.click(self.BECivilWin, '', screen_point.上传图片[0], screen_point.上传图片[1]) sleep(1) w1 = WinControl('打开') if w1.exists(): w1.wait(3) m1.click('打开', '', 1110, 45) sleep(1) w1.controlSetText('[CLASS:Edit; INSTANCE:2]', self.uploadaddress) autoit.send("{ENTER}") sleep(1) w1.controlSetText('[CLASS:Edit; INSTANCE:1]', r'picture1.jpg') sleep(1) w1.controlClick("[CLASS:Button; INSTANCE:1]") sleep(3) if w0.exists(): w0.wait(3) t = w0.getPos() if t == (874, 438, 1046, 602): pass else: raise Exception('Something went wrong.') w0.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未弹出上传成功窗口") else: raise Exception("未弹出打开窗口") else: raise Exception("未识别BECivil窗口")
def creat_contract_management(self): # 新增合同 if WinControl(self.IMWin).exists(): m1 = MouseControl() m1.click(self.IMWin, '', screen_point.选择项目部[0], screen_point.选择项目部[1]) sleep(1) m1.click(self.IMWin, '', screen_point.工程管理[0], screen_point.工程管理[1]) m1.click(self.IMWin, '', screen_point.合同管理[0], screen_point.合同管理[1]) m1.click(self.IMWin, '', screen_point.新增施工合同[0], screen_point.新增施工合同[1]) sleep(5) m1.click(self.IMWin, '', screen_point.合同编号[0], screen_point.合同编号[1]) autoit.send(self.message1) m1.click(self.IMWin, '', screen_point.合同金额[0], screen_point.合同金额[1]) autoit.send(self.message2) m1.click(self.IMWin, '', screen_point.合同签订日期[0], screen_point.合同签订日期[1]) m1.click(self.IMWin, '', screen_point.今天签订[0], screen_point.今天签订[1]) m1.click(self.IMWin, '', screen_point.建设单位[0], screen_point.建设单位[1]) autoit.send(self.message3) m1.click(self.IMWin, '', screen_point.施工单位[0], screen_point.施工单位[1]) autoit.send(self.message4) m1.click(self.IMWin, '', screen_point.起止桩号[0], screen_point.起止桩号[1]) autoit.send(self.message5) m1.click(self.IMWin, '', screen_point.合同段长度[0], screen_point.合同段长度[1]) autoit.send(self.message6) m1.click(self.IMWin, '', screen_point.计划开工日期[0], screen_point.计划开工日期[1]) m1.click(self.IMWin, '', screen_point.今天开工[0], screen_point.今天开工[1]) m1.click(self.IMWin, '', screen_point.标段号[0], screen_point.标段号[1]) autoit.send(self.message7) m1.click(self.IMWin, '', screen_point.项目名称[0], screen_point.项目名称[1]) autoit.send(self.message8) m1.click(self.IMWin, '', screen_point.监理名称[0], screen_point.监理名称[1]) autoit.send(self.message9) m1.click(self.IMWin, '', screen_point.结束桩号[0], screen_point.结束桩号[1]) autoit.send(self.message10) m1.click(self.IMWin, '', screen_point.计划完工日期[0], screen_point.计划完工日期[1]) m1.click(self.IMWin, '', screen_point.今天完工[0], screen_point.今天完工[1]) m1.move(self.IMWin, '', 960, 590) autoit.mouse_wheel('down', 2) m1.click(self.IMWin, '', screen_point.工期[0], screen_point.工期[1]) autoit.send(self.message11) m1.click(self.IMWin, '', screen_point.保存[0], screen_point.保存[1]) else: raise Exception('没有检测到IM窗口!')
def download_porject(self): """下载工程""" w0 = WinControl(self.BECivilWin) if w0.exists(): m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.系统[0], screen_point.系统[1]) m1.click(self.BECivilWin, '', screen_point.下载工程[0], screen_point.下载工程[1]) sleep(2) w1 = WinControl('浏览文件夹') if w1.exists(): w1.wait(3) # 选择下载的目标地址 w1.controlTreeView('[CLASS:SysTreeView32; INSTANCE:1]', 'Select', extra='桌面') choose_direction(6) choose_direction(3) choose_direction(1) choose_direction(2) sleep(2) w1.controlClick('Button1') if w0.exists(): w0.wait(3) t = w0.getPos() # 目标文件夹没有下载过该工程 if t == (0, 0, 1920, 1040): pass # 目标文件夹曾经下载过该工程 elif t == (832, 438, 1088, 602): pass else: raise Exception('Something went wrong.') sleep(2) w0.controlClick('[CLASS:Button; INSTANCE:1]') else: pass sleep(1) w2 = WinControl('下载管理器') if w2.exists(): pass else: raise Exception('未弹出下载管理器窗口') else: raise Exception("未选中浏览文件夹窗口") else: raise Exception("未识别BECivil窗口")
def open_working_set(self): """打开工作集""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.系统[0], screen_point.系统[1]) m1.click(self.BECivilWin, '', screen_point.打开工作集[0], screen_point.打开工作集[1]) sleep(3) w1 = WinControl('打开工作集') if w1.exists(): w1.setState(3) w1.controlSetText('[CLASS:Edit; INSTANCE:1]', '测试脚本用创建工作集') sleep(3) # 打开工作集,因为有时候双击会出现打不开的情况,故设置点击数为3 m1.click('打开工作集', '', 92, 134, clicks=3) else: raise Exception("未选中打开工作集窗口") else: raise Exception("未识别BECivil窗口")
def local_task(self): """本地任务""" w0 = WinControl(self.BECivilWin) if w0.exists(): m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.系统[0], screen_point.系统[1]) m1.click(self.BECivilWin, '', screen_point.本地任务[0], screen_point.本地任务[1]) w1 = WinControl(" 本机处理任务") if w1.exists(): w1.wait(3) w1.setState(3) # 历史记录 m1.click(" 本机处理任务", '', 85, 30) # 删除此次上传的两条记录 for i in range(2): m1.click(" 本机处理任务", '', 50, 90) w1.controlClick('Button1') if w0.exists(): w0.waitActive(3) # 识别确定删除窗口关联的进程ID t = w0.getPos() if t == (845, 438, 1075, 602): pass else: raise Exception("未成功删除该任务") sleep(1) w0.controlClick('Button1') sleep(1) else: raise Exception("未成功删除该任务") sleep(1) # 关闭本机处理任务 m1.click(" 本机处理任务", '', 1905, 5) else: raise Exception("未选中本机任务窗口") else: raise Exception("未识别BECivil窗口")
def sand_table_cockpit(self): """沙盘驾驶舱""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.沙盘[0], screen_point.沙盘[1]) m1.click(self.BECivilWin, '', screen_point.沙盘模式[0], screen_point.沙盘模式[1]) m1.click(self.BECivilWin, '', screen_point.沙盘驾驶舱[0], screen_point.沙盘驾驶舱[1]) sleep(3) w1 = WinControl(" 沙盘驾驶舱") if w1.exists(): w1.wait(3) # 播放 m1.click(' 沙盘驾驶舱', '', 190, 970) sleep(3) # 刷新 m1.click(' 沙盘驾驶舱', '', 450, 40) sleep(3) if w0.exists(): w0.wait(3) t = w0.getPos() if t == (838, 438, 1082, 602): pass else: raise Exception('Something went wrong.') sleep(1) w0.controlClick("[CLASS:Button; INSTANCE:1]") else: raise Exception("未弹出刷新完成窗口") # 关闭沙盘驾驶舱窗口 m1.click(' 沙盘驾驶舱', '', 1905, 10) else: raise Exception("未打开沙盘驾驶舱窗口") else: raise Exception("未识别BECivil窗口")
def upload_information(self): """上传资料""" w0 = WinControl(self.BECivilWin) if w0.exists(): w0.wait(3) m1 = MouseControl() m1.click(self.BECivilWin, '', screen_point.资料[0], screen_point.资料[1]) m1.click(self.BECivilWin, '', screen_point.上传资料[0], screen_point.上传资料[1]) w1 = WinControl('上传资料') sleep(3) if w1.exists(): w1.wait(3) w1.setState(3) ''' # 因删除上传资料的文件夹在BECivil上是有bug的,服务器说要等到下个版本发版的时候再改,所以新增删除文件夹这一块暂时注掉 m1.click('上传资料', '', 40, 90, button='right') sleep(1) m1.click('上传资料', '', 100, 105) m1.click('上传资料', '', 40, 90)# 点击全部 sleep(1) w1.controlClick('[CLASS:Button; INSTANCE:9]') sleep(1) w2 = WinControl('文件夹新建') if w2.exists(): w2.wait(3) w2.controlSetText('[CLASS:Edit; INSTANCE:1]', '测试脚本用上传文件夹') sleep(1) w2.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception("未打开新建文件夹窗口") ''' # 点击新建文件夹 m1.click('上传资料', '', 60, 110) sleep(1) w1.controlClick('[CLASS:Button; INSTANCE:11]') sleep(3) w3 = WinControl('授权人员') if w3.exists(): w3.wait(3) w3.controlSetText('[CLASS:Edit; INSTANCE:1]', 'xushenwei') w3.controlClick('[CLASS:Button; INSTANCE:5]') sleep(1) # 勾选授权人员 m1.click('授权人员', '', 870, 420) w3.controlClick('[CLASS:Button; INSTANCE:2]') else: raise Exception("未打开授权人员窗口") sleep(1) # 本地资料 w1.controlClick('[CLASS:Button; INSTANCE:14]') sleep(2) w4 = WinControl('打开') if w4.exists(): w4.wait(3) w4.setState(3) m1.click('打开', '', 970, 50) w4.controlSetText('[CLASS:Edit; INSTANCE:2]', self.uploadaddress) autoit.send("{ENTER}") w4.controlSetText('[CLASS:Edit; INSTANCE:1]', r'上传测试资料.txt') sleep(2) w4.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception("上传资料未成功") sleep(4) # 关联 m1.click('上传资料', '', 1800, 110) sleep(2) w5 = WinControl(' 设置资料信息') if w5.exists(): w5.wait(3) # 点击标签 m1.click(' 设置资料信息', '', 840, 260) w5.controlSetText('[CLASS:ListBox; INSTANCE:1]', '测试脚本用标签') w5.controlClick('[CLASS:Button; INSTANCE:14]') m1.click(' 设置资料信息', '', 790, 335) sleep(1) w5.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception("未打开关联资料窗口") # 查看 m1.click('上传资料', '', 1840, 110) sleep(2) w6 = WinControl('上传测试资料.txt - 记事本') if w6.exists(): w6.wait(3) w6.setState(3) sleep(1) m1.click('上传测试资料.txt - 记事本', '', 1890, 10) else: raise Exception('未打开上传的资料') ''' m1.click('上传资料', '', 1880, 110) sleep(1) if w0.exists(): w0.wait(3) w0.controlClick('[CLASS:Button; INSTANCE:1]') else: raise Exception("未成功删除上传资料") ''' # 关闭上传资料窗口 m1.click('上传资料', '', 1905, 10) else: raise Exception("未打开上传资料窗口") else: raise Exception('未识别BECivil窗口')