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

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

目标: 

    登录脚本:从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结果:

 

 

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(想写入也可以调),无关掉浏览器,直接等待下一步测试操作。

 

 

 

 

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

 

posted @ 2018-07-18 19:48  怪盗积德  阅读(276)  评论(0编辑  收藏  举报