Python+selenium创建自动执行命令脚本-自动化测试
更新时间:2022-03-22 09:26:16 作者:多测师 浏览:250
Python+selenium创建自动执行命令脚本,通过该项目解决了,通过window的任务管理器,每天定时调用脚本,获取相关分析数据,用于分析数据误差,通过误差来分析埋点数据从需求到数据处理完成过程中的是否存在问题。
以下给出功能代码,获取界面元素,把跑的sql句填写到对应的编辑区域,点击执行,执行成功下载数据。
#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()
以上内容为大家介绍了自动化测试中的Python+selenium创建自动执行命令脚本,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/