首页 > 编程 > Python > 正文

Python+selenium创建自动执行命令脚本

2019-11-06 06:37:34
字体:
来源:转载
供稿:网友
#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
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表