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是否為空,用不同的方式比對兩種情況,最終得到結果;
