【原创】selenium+python+openpyxl实现登录自动化测试,自动读取excel用例数据,并将数据结果自动写入到excel

时间:2022-11-06 11:51:31
 1 # -*- coding: utf-8 -*-
 2 from selenium import webdriver
 3 from openpyxl import load_workbook
 4 from time import sleep
 5 class mylogintest():
 6     '''打开百度测试'''
 7 
 8     def openBD(self):
 9         '''打开百度'''
10         print("begin")
11         book = load_workbook("mylogintest.xlsx")  # 默认可读写,若有需要可以指定write_only和read_only为True
12         b = book.active
13         datadict = {} #创建一个字典变量
14         maxC = b.max_column#获取最大列
15         maxR = b.max_row#获取最大行
16         for i in range(1, maxC + 1):#range默认从0开始,到后面参数的-1结束,而openpyxl都是从第一行第一列开始的,所以参数为1,maxC+1;意思就是遍历第一列到最后一列,
17             datadict.setdefault(b.cell(1, i).value)#将第一行中的所有列即2标题作为键放到字典datadict里面
18             # print(datadict)
19         for i in range(2, maxR + 1):#除去第一行标题,从第二行遍历到最后一行
20             for j in range(1, maxC + 1):#从第一列遍历到最后一列
21                 datadict[b.cell(1, j).value] = b.cell(i, j).value#把第二行的内容作为键对应的值放入字典datadict里面
22             try:
23                 self.driver = webdriver.Firefox()
24                 self.driver.get(datadict["url"])#从对应键里取出对应的URL值,这里的键就是表格的第一行标题,所以EXCEL的标题要按照规定来写
25                 self.driver.find_element_by_xpath("/html/body/div[1]/div/div[1]/div[3]/a[1]/img").click()
26                 if datadict["username"]!=None:
27                     username = self.driver.find_element_by_name("username").send_keys(datadict["username"])#当用户名不为空时,把值放到username文本框中
28                 if datadict["password"] != None:
29                     password = self.driver.find_element_by_name("password").send_keys(datadict["password"])#当密码不为空时,把值放到password文本框中,要判断一下否则会出错
30                 self.driver.find_element_by_id("loginbtn").click()#点击登录
31                 if datadict["checkmeg"]!=None:#当校验值不为空时
32                     msg = self.driver.find_element_by_xpath("/html/body/div[8]/div").text#比对校验值
33                     if msg == datadict['checkmeg']:#如果校验值比对成功,将校验值写入结果
34                         b.cell(i, maxC, msg)
35                     else:
36                         b.cell(i, maxC, '失败')#否则将失败写入结果中
37                 else:#当校验值不为空时
38                 # print(self.driver.switch_to.alert.text)
39                     cur_url = self.driver.current_url#判断当前url
40                     if cur_url == datadict['checkurl']:#如果当前url是校验的url
41                         b.cell(i, maxC, '登录成功')  # 就将测试登录成功结果写入表格中
42                     else:
43                         b.cell(i, maxC, '登录失败')  # 就将测试登陆失败结果写入表格中
44                 sleep(1)
45                 self.driver.quit()
46 
47             except:
48                 b.cell(i, maxC, 'error')#当程序出现错误时,将错误结果写入表格中
49 
50         book.save("mylogintest.xlsx")#最后记得关闭
51 
52         print("end")
53 
54 mylogintest().openBD()

【原创】selenium+python+openpyxl实现登录自动化测试,自动读取excel用例数据,并将数据结果自动写入到excel

大体思路:

将登陆分为两种情况:一种是登陆成功的情况,一种是登陆失败的情况,如果是登陆成功的checkmeg为空,比对checkurl,如果是登录失败的,直接比对checkmeg,然后将执行结果写入表格中;

脚本中直接判断checkmeg是否为空就行,根据checkmeg是否为空,用不同的方式比对两种情况,最终得到结果;