【原創】selenium+python+openpyxl實現登錄自動化測試,自動讀取excel用例數據,並將數據結果自動寫入到excel


 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()

大體思路:

將登陸分為兩種情況:一種是登陸成功的情況,一種是登陸失敗的情況,如果是登陸成功的checkmeg為空,比對checkurl,如果是登錄失敗的,直接比對checkmeg,然后將執行結果寫入表格中;

腳本中直接判斷checkmeg是否為空就行,根據checkmeg是否為空,用不同的方式比對兩種情況,最終得到結果;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM