#coding=utf8'''该模式功能是实现自动运行sql命令,命令执行成功后保存成功截图并下载结果文件;运行出错,则保存错误截图;开始运行保存,设置命令截图。该模块初始化包含如下信息:self.url:用来保存要访问的网站链接self.driver:创建一个Chrome对象实例,并启动Chrome浏览器self.driver.maximize_window():窗口最大化self.driver.get(self.url):打开网站链接self.driver.implicitly_wait(10):设置隐性等待时间10秒'''import timefrom selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWait #设置默认编码格式为utf8import sysreload(sys)sys.setdefaultencoding("utf8")class RunXQL(object): def __init__(self): self.url="" self.driver=webdriver.Chrome() self.driver.maximize_window() self.driver.get(self.url) self.driver.implicitly_wait(10) self.run() def openCmd(self): #设置命令文件的路径,使用RunAll.py脚本时,是.//CmdFile//CMD #如果直接运行该脚本要更改为:..//CmdFile//CMD filePath=".//CmdFile//CMD" #打开文件 cmd=file(filePath,"r+") #读取文件 cmd=cmd.read() #把文件转换成string类型并解码 cmds=str(cmd).decode("utf8") #根据换行符对命令文件进行拆分 #如果不进行该项处理,在命令行结尾会莫名添加一个括号) cmd=cmds.split("/n") #返回命令行列表 return cmd def SetCmdImage(self): try: #获取当前时间并转换为字符串 now=time.strftime("%Y%m%d%H%M%S") #设置图片格式与路径 #如果直接运行该脚本,变成..//SetCmdImage #以下涉及路径的于此处理方法一样 fileName=".//SetCmdImage"+"//"+now+"xpl.png" #保存屏幕截图到相应路径 self.driver.get_screenshot_as_file(fileName) except Exception,e: PRint e def RunErrorImage(self): try: now=time.strftime("%Y%m%d%H%M%S") fileName=".//RunErrorImage"+"//"+now+"xqlErro.png" self.driver.get_screenshot_as_file(fileName) except Exception,e: print e def SuccessImage(self): try: now=time.strftime("%Y%m%d%H%M%S") fileName=".//ExecResutlImage"+"//"+now+"success.png" self.driver.get_screenshot_as_file(fileName) except Exception,e: print e def inputCMD(self,cmd): try: #获取输入命令行元素对象 cmdArea=self.driver.find_element_by_class_name("ace_text-input") #如果元素存在 if cmdArea: #把命令输入到文本区域中 cmdArea.send_keys(cmd) #获取屏幕截图 self.SetCmdImage() else: print "The element %s not exists!" %("ace_text-input") except Exception,e: print e def runCmd(self): try: #获取执行命令的元素对象 runEle=self.driver.find_element_by_xpath("//*[@id=/"new-tab-cont/"]/div/div[1]/ul[1]/li[1]/a") #如果元素存在 if runEle: #点击该元素运行命令 runEle.click() else: print "The element %s not exists!" %("exec") except Exception,e: print e def clickDown(self): try: #获取下载元素对象 download=self.driver.find_element_by_xpath("//*[@id=/"new-tab-cont/"]/div/div[3]/ul/li[1]/a[1]") #如果元素存在 if download: #点击该元素执行下载操作 download.click() else: print "The element %s not exists!" %("fa fa-download j-dload") except Exception,e: print e def GetResutl(self): try: try: #获取命令出错或执行异常,显示异常信息的元素对象 #超过60秒如果找不到该元素,失败 text_danger=WebDriverWait(self.driver, 60).until(lambda driver: driver.find_element_by_xpath("//*[@id=/"new-tab-cont/"]/div/div[3]/div/div[1]/pre")) #如果元素存在 if text_danger: #获取元素的文本信息 errInfro=text_danger.text #获取屏幕截图 self.RunErrorImage() print errInfro except Exception,e: pass try: #获取成功时显示的文本信息,超过300秒元素不存在则失败 text_success=WebDriverWait(self.driver, 300).until(lambda driver: driver.find_element_by_class_name("text-success")) #如果元素存在 if text_success: #获取屏幕截图 self.SuccessImage() print "sql run successs......" #点击下载按钮下载运行结果文件 self.clickDown() except Exception,e: print e finally: #最后关闭浏览器 self.driver.close() def run(self): try: cmd=self.openCmd() self.inputCMD(cmd) self.runCmd() self.GetResutl() print "success......" except Exception,e: print e finally: #最后关闭浏览器 self.driver.close() def test(): RunXQL() if __name__=="__main__": test() 完整项目源码下载链接:http://download.csdn.net/download/henni_719/9771946
新闻热点
疑难解答