python禅道_python+selenium自动化禅道登录测试

def openBrowser():    #实例化和返回webdriver对象,打开浏览器

driver = webdriver.Chrome()

return driver

openUrl

def openUrl(driver,url): #传入webdriver对象和url

driver.get(url)      #打开禅道地址,地址信息放到Excel表中进行维护,具体见ReadUserdate模块获取数据

driver.set_window_size(1280,1080)    #设置浏览器大小,或打开全屏driver.maximize_window

driver.find_element_by_link_text('开源版').click()  #点击选择开源版

findElement

def findElement(driver,arg):    #定位登录用户、密码、登录按钮元素位置,arg参数为传出web信息,具体见ReadUserdate

actelem = driver.find_element_by_id(arg['actid'])

pwdelem = driver.find_element_by_name(arg['pwdname'])

loginelem = driver.find_element_by_id(arg['loginid'])

return actelem,pwdelem,loginelem

sendValues

def sendValues(eletuple,arg):    #进行用户名、密码输入操作,点击登录

listkey = ['account','password']

i = 0

for key in listkey:        #对findEleent中的用户名、密码、登录按钮元素进行操作

eletuple[i].send_keys('')  #输入空格

eletuple[i].clear()      #清除输入框,当输入错误密码时清除,为下一个用户做登录

eletuple[i].send_keys(arg[key])  #输入用户名、密码

i += 1

eletuple[2].click()  #点击的登录按钮

checkResult

def checkResult(driver,asserele):  #登录成功断言

result = False

try:

driver.find_element_by_link_text(asserele)  #如果找到“asserele”元素(传参),即登录成功,返回True

print('Account And Pwd Right!')

result = True

except:

print('Account And Pwd Error!')

return result

logout

def logout(driver,test_dict):    #注销操作

driver.find_element_by_class_name(test_dict['toggle']).click()

driver.find_element_by_link_text(test_dict['logout']).click()

login_test

def login_test(test_dict,act_dict):    #登录测试

d = openBrowser()            #打开浏览器

openUrl(d,test_dict['url'])      #打开禅道地址

ele_tuple = findElement(d,test_dict)  #定义元素对象

for user_arg in act_dict:

sendValues(ele_tuple,user_arg)    #输入用户名、密码、点击登录

sleep(1)

result = checkResult(d,test_dict['error'])  #断言

sleep(2)

if result:

logout(d,test_dict)    #注销

ele_tuple = findElement(d,test_dict)  #重新获取元素

sleep(5)

d.quit()

import codecs

import xlrd

import datetime

from xlrd.xldate import xldate_as_tuple

def get_excel_userinfo(file):    #获取用户信息表数据

colnum = 0

sheet_name = '第一页'

'''

file:默认文件路径及名称;

colnum:默认第一行的值为表头;

sheet_name:默认读取excel表中名称为”第一页“的工作表。

'''

book = xlrd.open_workbook(file) #打开excel文件返回Book对象

sheet1 = book.sheet_by_name('第一页') #获取”第一页“工作表对象;获取第一个工作表

colnames = sheet1.row_values(colnum) #获取第一行的值,作为表头

nrows = sheet1.nrows #获取表中的有效行数

list = [] #定义返回数据为列表形式

for rownum in range(1,nrows): #从第2行开始遍历每行的数据

rowvalues = sheet1.row_values(rownum)

if rowvalues:

dictlist = {} #定义获取的用户信息为字典形式

for i in range(len(colnames)): #遍历表头值个数

ctype = sheet1.cell(rownum,i).ctype #获取单元格数据类型,empty(为空)为0;string为1;number为2;date为3;boolean为4;error为5

cellvalues = sheet1.cell_value(rownum,i)

if ctype == 2: #number类型转化为整形

cellvalues = int(cellvalues)

'''

#日期转换,还存在问题

elif ctype == 4:

date = datetime(xldate_as_tuple(cellvalues, 1))

cellvalues = date.strftime('%Y/%d/%m %H:%M:%S')

'''

dictlist[colnames[i]] = cellvalues #将遍历每行中的值赋值给对应的表头值,并添加到dictlist字典中

list.append(dictlist)

return list    #返回为列表

def get_excel_webinfo(file):    #获取web界面信息表数据

book = xlrd.open_workbook(file)

sheet1 = book.sheet_by_index(0)

ncols = sheet1.ncols

nrows = sheet1.nrows

colvalues1 = sheet1.col_values(0)

colvalues2 = sheet1.col_values(1)

list = {}      #返回字典集

for rownum in range(nrows):      #第一列数据等于第二列数据

list[colvalues1[rownum]] = colvalues2[rownum]

return list

整体代码:

from selenium import webdriver

from time import sleep

from selenium.webdriver.support.wait import WebDriverWait

from ReadUserdate import get_webinfo,get_userinfo,get_excel_userinfo,get_excel_webinfo

def openBrowser():

driver = webdriver.Chrome()

return driver

def openUrl(driver,url):

driver.get(url)

driver.set_window_size(1280,1080)

driver.find_element_by_link_text('开源版').click()

def findElement(driver,arg):

actelem = driver.find_element_by_id(arg['actid'])

pwdelem = driver.find_element_by_name(arg['pwdname'])

loginelem = driver.find_element_by_id(arg['loginid'])

return actelem,pwdelem,loginelem

def sendValues(eletuple,arg):

listkey = ['account','password']

i = 0

for key in listkey:

eletuple[i].send_keys('')

eletuple[i].clear()

eletuple[i].send_keys(arg[key])

i += 1

eletuple[2].click()

def checkResult(driver,asserele):

result = False

try:

driver.find_element_by_link_text(asserele)

print('Account And Pwd Right!')

result = True

except:

print('Account And Pwd Error!')

return result

def logout(driver,test_dict):

driver.find_element_by_class_name(test_dict['toggle']).click()

driver.find_element_by_link_text(test_dict['logout']).click()

def login_test(test_dict,act_dict):

d = openBrowser()

openUrl(d,test_dict['url'])

ele_tuple = findElement(d,test_dict)

for user_arg in act_dict:

sendValues(ele_tuple,user_arg)

sleep(1)

result = checkResult(d,test_dict['error'])

sleep(2)

if result:

logout(d,test_dict)

ele_tuple = findElement(d,test_dict)

sleep(5)

d.quit()

if __name__ == '__main__':

#运行程序进行测试

test_dict = get_excel_webinfo(r'F:\学习文件\Python文件\ZenDaoRobotTest\webinfo.xlsx')

act_dict = get_excel_userinfo(r'F:\学习文件\Python文件\ZenDaoRobotTest\userinfo.xlsx')

login_test(test_dict,act_dict)

excel数据表:

程序为使用表中用户名、密码进行登录,如果用户名、密码都正确,则进行注销,再使用下一个用户名、密码进行登录,所以只需要对userinfo的Excel文件的用户数据进行设计,无需修改代码。比如正确用户名和密码;错误用户名和正确密码;正确用户名和错误密码等,具体需求具体分析,根据需求设计用户信息

运行结果:

ReadUserdate获取到的数据形式:

需要使用什么值,只需要指定字典中对应的键值即可

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值