基于python+selenium的自动化测试,测试百度网盘Web端的登录功能【实战练习】

注:网站的相关信息(url、元素等),用户信息(账号、密码)都是放在excel中读取的。最后生成的测试结果也是写入excel中的。主要的逻辑顺序就是:打开浏览器、输入网址打开网页、找到网页各个元素、输入账号密码、判断结果(正确的话需要注销重新登录)。

贴上excel中的网站信息web_info.xlsx和用户信息user_info.xlsx:

基于python+selenium的自动化测试,测试百度网盘Web端的登录功能【实战练习】_第1张图片

基于python+selenium的自动化测试,测试百度网盘Web端的登录功能【实战练习】_第2张图片

自动化测试脚本源代码:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
import time
import xlrd
import xlsxwriter

class get_web_info(object):
	"""docstring for get_web_info"""
	def __init__(self, index,path=''):
		self.xl = xlrd.open_workbook(path)
		self.sheet = self.xl.sheet_by_index(index)
	def get_sheet_info(self):
		info_list = {}
		for row in range(self.sheet.nrows):
			result = [val for val in self.sheet.row_values(row)]
			temp = dict([result])
			info_list.update(temp)
		return info_list

class get_user_info(object):
	"""docstring for get_user_info"""
	def __init__(self, index,path=''):
		self.xl = xlrd.open_workbook(path)
		self.sheet = self.xl.sheet_by_index(index)
	def get_sheet_info(self):
		info_list = []
		info_dict = {}
		listkey = ['account','pwd']
		for row in range(1,self.sheet.nrows):
			result = [val for val in self.sheet.row_values(row)]
			info_dict = dict(zip(listkey,result))
			info_list.append(info_dict)
		return info_list

class set_login_result(object):
	"""docstring for set_login_result"""
	def __init__(self, sheetname):
		fname = time.strftime("%Y-%m-%d",time.gmtime())
		self.row = 1
		self.xl = xlsxwriter.Workbook(fname+'.xls')
		self.sheet = self.xl.add_worksheet(sheetname)
		self.style = self.xl.add_format({'bg_color':'#DC143C'})
		self.otherstyle = self.xl.add_format({'bg_color':'green'})
		self.sheet.set_column('A:D',40)
	def xl_title(self,*title):
		row = 0
		col = 0
		for val in title:
			self.sheet.write_string(row,col,val)
			col+=1
	def xl_write(self,*args):
		col = 0
		style = ''
		if 'Error' in args:
			style = self.style
		if 'Pass' in args:
			style = self.otherstyle
		for val in args:
			self.sheet.write_string(self.row,col,val,style)
			col+=1
		self.row+=1
	def xl_close(self):
		self.xl.close()

def get_ele_times(driver,times,func):
	return WebDriverWait(driver,times).until(func)	

def openBrowser():
	browser = webdriver.Chrome()
	return browser

def openUrl(driver,url):
	driver.get(url)
	time.sleep(1.5)
	driver.maximize_window()

def findElements(driver,arg):
	if 'way_id' in arg:
		ele_login_way = get_ele_times(driver,5,lambda d:driver.find_element_by_id(arg['way_id']))
		ele_login_way.click()
	time.sleep(3)
	useEle = driver.find_element_by_id(arg['account_id'])
	pwdEle = driver.find_element_by_id(arg['pwd_id'])
	loginEle = driver.find_element_by_id(arg['confirm_id'])
	return useEle,pwdEle,loginEle

def sendVals(eletuple,arg):
	listkey = ['account','pwd']
	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 exit(driver,web_info):
	exit_ele = driver.find_element_by_class_name(web_info['tip-class'])
	exit_ele.click()

def logout(driver,web_info):
	arrow = driver.find_element_by_xpath(web_info['arrow_xpath'])
	ActionChains(driver).move_to_element(arrow).perform()
	time.sleep(1)
	driver.find_element_by_link_text(web_info['logout_text']).click()
	time.sleep(2)
	driver.find_element_by_link_text(web_info['confirm_text']).click()


def checkResults(driver,errid,arg,log):
	result=False
	time.sleep(2)
	try:
		err = driver.find_element_by_id(errid)
		print ("Account Or Pwd Error!")
		log.xl_write(arg['account'], arg['pwd'], 'Error', err.text)
	except:
		print("Account And Pwd Right!")
		log.xl_write(arg['account'],arg['pwd'],'Pass','账号密码正确')
		result=True
	return result 



def login_test(web_info,user_info):
	browser = openBrowser()
	openUrl(browser,web_info['url'])
	log = set_login_result('sheet1')
	log.xl_title('account','pwd','result','massage')
	ele_tuple = findElements(browser,web_info)
	for arg in user_info:
		sendVals(ele_tuple,arg)
		result = checkResults(browser,web_info['error_id'],arg,log)
		if result:
			time.sleep(3)
			exit(browser,web_info)
			time.sleep(3)
			logout(browser,web_info)
			ele_tuple = findElements(browser,web_info)
	log.xl_close()

if __name__ == '__main__':
	Xlweb = get_web_info(0,r'web_info.xlsx')
	web_info = Xlweb.get_sheet_info()
	Xluser = get_user_info(0,r'user_info.xlsx')
	user_info = Xluser.get_sheet_info()
	login_test(web_info,user_info)
	time.sleep(2)

		

最后是生成的excel测试结果:


你可能感兴趣的:(基于python+selenium的自动化测试,测试百度网盘Web端的登录功能【实战练习】)