使用python+selenium自动上传exel表中bug

来源:互联网 发布:java没学好可以做什么 编辑:程序博客网 时间:2024/05/29 17:16

我是一个测试,每天最烦的就是上传bug,为了简化自己的工作量,也是为了偷懒,所以写了一个根据python+selenium上传exel表中的脚本,脚本有什么不得当之处,请大家谅解。

环境准备:

1.python2.7/python3.5(我现在自己用的环境是2.7)

2.禅道专业版 5.5.1

3.exel表(这是我自己bug记录表格,应为cnds无法上传文件,所以放在我的百度云里链接:http://pan.baidu.com/s/1c9rBrC)

python需要的库

1.xlrd(操作exel表),time(时间),selenium(自动化)

代码:

(我取名为get_chandao.py(这个无所谓的))

#coding:utf-8
import sys, os, xlrd, time, login
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
reload(sys)
sys.setdefaultencoding('utf8')


#自定义输入文件
version = "Trunk"   #影响版本号
file_name = 'kmj_20161208_B2C安卓Newbuglist_沈伟.xlsx'    #定义exel文件路径
data = xlrd.open_workbook(file_name.decode('utf8'))   #打开文件数据
table = data.sheets()[0]   #获取整行的值
nrows = table.nrows   #获取列数
driver = webdriver.Firefox()


#用户登录
login.login(driver)


#执行上传操作
for num in range(4,(nrows+1)):
bug_id = (table.cell(num, 1).value)  #BUG_ID
bug_title = (table.cell(num, 2).value)  #摘要
Operating_steps = (table.cell(num, 4).value)   #操作步骤
Expected_result = (table.cell(num, 5).value)   #预期结果
Test_result = (table.cell(num,6).value)   #测试结果
Seriousness = (table.cell(num,7).value)   #严重性
Bug_Assign = (table.cell(num,13).value)   #bug指派人
Yes_not_image = (table.cell(num,11).value)  #是否图片
repro_steps = '[步骤]' + Operating_steps+'\n', '[结果]' +Test_result+ '\n', '[期望]' +Expected_result
driver.find_element_by_xpath('//*[@id="createActionMenu"]/a').click()   #点击提bug按钮


#影响版本
def Impact_version(driver, version):
driver.find_element_by_xpath('//*[@id="openedBuild_chosen"]/ul/li/input').click()
driver.find_element_by_xpath('//*[@id="openedBuild_chosen"]/ul/li/input').send_keys(version)
driver.find_element_by_xpath('//*[@id="openedBuild_chosen"]/ul/li/input').send_keys(Keys.ENTER)


#严重程度判断
def Severity(Seriousness,driver):
print (Seriousness)
severity = Seriousness.split('.')[1]    #严重程度
s1 = Select(driver.find_element_by_id('severity'))  # 实例化Select 
# driver.find_element_by_id('severity').click()
if severity == '重大错误':
s1.select_by_value("1")
elif severity == '严重错误':
s1.select_by_value("2")
elif severity == '次要错误':
s1.select_by_value("3")
elif severity == '轻微错误':
s1.select_by_value("4")


#重现步骤
def Repro_steps(driver, repro_steps):
xf = driver.find_element_by_xpath('//*[@id="dataform"]/table/tbody/tr[6]/td/div[2]/div[2]/iframe')
driver.switch_to_frame(xf)
driver.find_element_by_xpath('/html/body/p').send_keys(Keys.CONTROL,'a')
driver.find_element_by_xpath('/html/body/p').send_keys(Keys.BACK_SPACE)
driver.switch_to_default_content()
driver.find_element_by_id('title').send_keys(bug_title)
driver.switch_to_frame(xf)
driver.find_element_by_xpath('/html/body').send_keys(repro_steps)
driver.switch_to_default_content()


#当前指派
def Assgin(driver):
driver.find_element_by_xpath(".//*[@id='assignedTo_chosen']/a").click()
driver.find_element_by_xpath(".//*[@id='assignedTo_chosen']/div/div/input").send_keys(Bug_Assign)
driver.find_element_by_xpath(".//*[@id='assignedTo_chosen']/div/div/input").send_keys(Keys.ENTER)


#是否上传图片
def Image(driver):
if Yes_not_image == '':
pass
elif Yes_not_image == '是':
driver.find_element_by_class_name('fileControl').send_keys((os.getcwd()+'\\'+bug_id+'.png'))

#运行
def get_chandao(driver):
Impact_version(driver, version)
Repro_steps(driver, repro_steps)
Severity(Seriousness,driver)
Image(driver)
Assgin(driver)
driver.find_element_by_id('submit').click()  #点击保存按钮


#主运行组合
def run():
#执行对exel表的上传操作
get_chandao(driver)
driver.quit()


if __name__ == '__main__':
run()

这个里面有导入一个login的模块

(我取名为login.py,将这个放在与get_chandao.py目录下)

#coding:utf-8

from selenium import webdriver
import time

#登录
def login(driver):
url = 'http://192.168.1.42/pro/user-login-L3Byby8=.html'
driver.get(url)
driver.implicitly_wait(30)
driver.find_element_by_id('account').clear()
driver.find_element_by_id('account').send_keys('admin')
driver.find_element_by_name('password').clear()
driver.find_element_by_name('password').send_keys('123456')
driver.find_element_by_id('submit').click()
driver.get("http://192.168.1.42/pro/bug-browse-1.html")   #跳转到测试模块
time.sleep(1)


操作方法:

1.将需要上传的exel放在get_chandao.py目录下,附件有例子

2.在get_chandao.py定义好你的file_name和verision

3.直接执行get_chandao.py

备注:

这只是写的基础的,大家可以参考就好了还有很多可以改进的地方,

1 0
原创粉丝点击