py+selenium一个可被调用的登录测试脚本【待优化】

时间:2022-05-13 21:07:02

大部分系统现在都有登录页面,本文主要尝试写一个登录的测试脚本,及另一个脚本调用它登录测试已登录的页面模块。

目标: 

    登录脚本:从excel里获取登录的测试数据(包括异常测试)→执行登录脚本→输出是否通过

    A模块测试脚本:调用登录脚本,从excel里获取正确登录的测试数据→执行自动登录脚本→执行模块测试用例→输出是否通过

登录脚本auto.py:

# coding:utf-8
from selenium import webdriver
import time
import xlrd
from xlutils.copy import copy class login_test: def __init__(self, x, y, css):
self.x = x
self.y = y
self.css = css

# 函数功能:获取数据测试登录
def auto_login(self):
global driver, workbook
# 打开excel,初始化excel参数
workbook = xlrd.open_workbook(r'F:\test.xlsx') login = workbook.sheet_names()[1] sheet2 = workbook.sheet_by_name(login)
# 取excel数据
username = sheet2.cell(self.x, self.y).value
password = sheet2.cell(self.x, self.y + 1).value
ctype = sheet2.cell(self. x, self.y + 1).ctype if ctype == 2: # 若是数字则转化为整型,这一步可避免报错类型
password = int(password) # 初始化一个火狐浏览器实例:driver , 打开浏览器访问
driver = webdriver.Ie()
driver.maximize_window() # 最大化浏览器 driver.get("http://url") # 通过get()方法,打开一个url站点 time.sleep(2) # 输入登录账号密码,点击登录
driver.find_element_by_xpath("//input[@name='loginname']").send_keys(username)
driver.find_element_by_xpath("//input[@name='password']").send_keys(password)
driver.find_element_by_xpath(".//*[@id='btn']/input").click() time.sleep(2) # 调用判断元素是否存在来判断是否登录成功
self.element_exist() # 函数功能:保存并关闭浏览器 为什么这一步要单独分出来呢,因为测试其他模块的时候,被调用的时可以不用执行这几行代码。
def save_quit(self): wt = copy(workbook)
wt.get_sheet("login").write(self.x, self.y+2, k)
wt.save(r'F:\test.xlsx')
driver.quit() # 函数功能:判断页面是否存在元素    可调用该函数进行验证页面是否存在某个元素 def element_exist(self):
global k
s = driver.find_elements_by_css_selector(css_selector=self.css)
result = [u'通过', u'不通过']
if s:
k = result[0] print("通过")
else:
k = result[1] print("不通过")
return k

#这一步有待优化了,少了这一步,登录脚本被其他模块调用时会报driver未定义,多了这一步,又多开了个浏览器,所以我多加了一步,关闭浏览器,就当做测试下驱动
#如有优化建议,麻烦留言,谢谢!
driver = webdriver.Ie()
driver.quit() if __name__ == "__main__": for x in range(1, 3):
y = 0
test = login_test(x, y, css="#foot")
test.auto_login()
test.save_quit()

excel结果:

py+selenium一个可被调用的登录测试脚本【待优化】

A模块脚本调用登录脚本automain.py:

# coding:utf-8
from selenium import webdriver
import time
# import xlrd
# from xlutils.copy import copy
import auto
from auto import driver auto.login_test(1, 0, css="#foot").auto_login() time.sleep(2) # 直接进行已登录页面的自动化测试操作
driver.find_element_by_xpath(".//*[@id='xxxx']/li[2]/a").click()

执行automain.py, 则从excel获取正确登录的数据,直接登录,无回写入excel(想写入也可以调),无关掉浏览器,直接等待下一步测试操作。

如有错误,请及时指正,谢谢