文档章节

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

henni_719
 henni_719
发布于 2017/07/21 08:53
字数 828
阅读 14
收藏 0
#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 time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait  
#设置默认编码格式为utf8
import sys
reload(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

© 著作权归作者所有

henni_719
粉丝 2
博文 466
码字总数 343938
作品 0
信阳
QA/测试工程师
私信 提问
Python+Selenium搭建UI自动化测试框架

本文原文来自GitHub个人主页 > Python+Selenium搭建UI自动化测试框架 Python语言是非常强大的编程语言,很多时候也拿来当脚本语言用。 Selenium是web应用测试工具,支持Java、Python等多种语...

FunGa
2015/09/06
8.9K
0
Docker + selenium + jenkins 并行跑自动化测试

背景 目标:使用docker做UI自动化测试并在Jenkins运行 调试环境:MocOS 运行环境:Linux ubuntu + docker 涉及工具:docker,selenium,unittest, jenkins 基本思路 找一个适合做自动化的doc...

呐呐丶嘿
2018/12/11
522
0
python+selenium自动化环境搭建

1、下载python安装。   https://www.python.org/downloads/release/python-351/ 根据自己的操作系统32/64 位,选择相应的版本。 安装过程我就没必要描述,我的安装目录为:C:Python35 2、进...

黄燕平
2018/06/26
0
0
分发系统、expect脚本、构建文件分发系统、批量远程执行命令

20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行命令 20.30 expect脚本传递参数 20.31 expect脚本同步文件 20.32 expect脚本指定host和要同步的文件 20.33 构建文件分...

tobej
06/19
15
0
Shell项目-分发系统-expect

[toc] 分发系统-expect 一、什么是分发系统? 如今一些比较大的企业,大都使用了负载均衡,而有时因为一些程序要更改,或者有些bug要修改,如果仅是几台server的话,很简单,把已经改好的程序...

Xavi2017
2018/04/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
12
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
8
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
11
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部