zoukankan      html  css  js  c++  java
  • 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: est.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: est.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(想写入也可以调),无关掉浏览器,直接等待下一步测试操作。

     

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

  • 相关阅读:
    java学习 hashmap(2)
    HITcsapp大作业 程序人生
    java学习之hashmap
    java学习笔记之高精度
    java 数论之FFT/NTT及多项式运算模板
    如何下载微信公众号的视频到本地
    win10家庭版通过gpedit.msc找不到组策略的解决方案
    uni-app
    elementui el-date-picker 选择一个月范围
    CommonJS规范的require与es6规范的import的区别
  • 原文地址:https://www.cnblogs.com/4wheel/p/9332244.html
Copyright © 2011-2022 走看看