日誌接口:log_module.py
import time
import os
class Loginfo(object):
def __init__(self, mode='w'): #打開文件
path = os.path.dirname(os.path.abspath('.')) + '/mokuaihua/logs/' # 日誌存儲路徑
filename = time.strftime('%Y-%m-%d_%H-%M-%S', time.localtime())+'.txt'
self.log = open(path+filename,mode,encoding='utf-8')
def log_write(self,msg):
self.log.write(msg)
def log_close(self):
self.log.close()
if __name__ == '__main__':
log = Loginfo()
log.log_write('test 測試')
log.log_close()
用例增加驗證信息:
from selenium import webdriver
import time
from selenium.webdriver.support.ui import WebDriverWait
#從文件中導入數據
from userdata import get_webinfo,get_userinfo
from log_module import Loginfo
def waituntil_load(driver,times,func):
return WebDriverWait(driver,times).until(func)
def openBrower():
driver = webdriver.Chrome()
return driver
def openUrl(driver,url):
driver.get(url)
driver.maximize_window()
def findElement(driver,arg):#參數是字點
# driver.find_element_by_xpath('/html/body/div[3]/div[2]/div[3]/div/div').click() #關閉彈窗
waituntil_load(driver, 15, lambda driver: driver.find_element_by_xpath('/html/body/div[3]/div[2]/div[3]/div/div')).click()
if 'text_id' in arg.keys():
element_login = waituntil_load(driver,15,lambda driver:driver.find_element_by_link_text(arg['text_id']))
element_login.click()
time.sleep(3)
userEle = driver.find_element_by_id(arg['userid'])
pwdEle = driver.find_element_by_id(arg['pwdid'])
loginEle = driver.find_element_by_id(arg['loginid'])
return userEle,pwdEle,loginEle
def sendValues(eletuple,arg):#arg爲登錄數據,格式爲字典
listkey = ['account','pwd']
i = 0
for key in listkey:
eletuple[i].clear()
eletuple[i].send_keys(arg[key])
i += 1
eletuple[-1].click()
def checkResult(driver,i,arg,log):
try:
err = driver.find_element_by_id('login-form-tips')
print('第%d個賬號登錄失敗,賬號信息是:%s, 提示信息爲:%s'%(i+1,arg,err.text))
msg = '第%d個賬號, %s:%s, error:%s'%(i+1,arg['account'],arg['pwd'],err.text)
log.log_write(msg+'\n')
result = False
except:
print('第%d個賬號登陸成功,賬號信息是:%s'%(i+1,arg))
msg = '第%d個賬號, %s:%s, pass' % (i+1, arg['account'],arg['pwd'])
log.log_write(msg+'\n')
result = True
return result
def login_test(ele_dict,user_list):
driver = openBrower()
#初始化日誌文件
log = Loginfo()
openUrl(driver,ele_dict['url'])
ele_tuple = findElement(driver,ele_dict)
for i in range(len(user_list)):
sendValues(ele_tuple,user_list[i])
time.sleep(3)
result = checkResult(driver,i,user_list[i],log)
if result == True:
driver.find_element_by_link_text('退出').click()#點擊退出按鈕
ele_tuple = findElement(driver, ele_dict)#重新找到相應元素,點擊登錄
time.sleep(3)
log.log_close()
if __name__ == '__main__':
'''
ele_dict = {'url': 'http://www.maiziedu.com/',
'text_id': '登錄',
'userid': 'id_account_l',
'pwdid': 'id_password_l',
'loginid': 'login_btn',
#'account' : '18665933615',
#'pwd' : 'abc123456',
#'errorinfo' : '賬號或者密碼錯誤,請重新輸入'
}
user_list = [{'account' : '18665933615','pwd' : 'abc123456'},
{'account': '123', 'pwd': 'abc123456'},
{'account' : '[email protected]','pwd' : 'z5'}]'''
ele_dict = get_webinfo()
#print(ele_dict)
user_list = get_userinfo()
#print(user_list)
login_test(ele_dict,user_list)
pycharm輸出爲:第1個賬號登錄失敗,賬號信息是:{'account': '18665933615', 'pwd': 'abc123456'}, 提示信息爲:賬號或者密碼錯誤,請重新輸入第2個賬號登錄失敗,賬號信息是:{'account': '123', 'pwd': 'abc123456'}, 提示信息爲:該賬號格式不正確
第3個賬號登陸成功,賬號信息是:{'account': '[email protected]', 'pwd': 'z15'}
第4個賬號登錄失敗,賬號信息是:{'account': '[email protected]', 'pwd': '123456'}, 提示信息爲:賬號或者密碼錯誤,請重新輸入
第5個賬號登錄失敗,賬號信息是:{'account': '', 'pwd': 'abc123456'}, 提示信息爲:賬號不能爲空
第6個賬號登錄失敗,賬號信息是:{'account': '18665933615', 'pwd': ''}, 提示信息爲:密碼不能爲空
日誌文件輸出爲:
第1個賬號, 18665933615:abc123456, error:賬號或者密碼錯誤,請重新輸入 第2個賬號, 123:abc123456, error:該賬號格式不正確 第3個賬號, [email protected]:z5, pass 第4個賬號, [email protected]:123456, error:賬號或者密碼錯誤,請重新輸入 第5個賬號, :abc123456, error:賬號不能爲空 第6個賬號, 18665933615:, error:密碼不能爲空