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

目标: 

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

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

py+selenium一个可被调用的登录测试脚本【待优化】的更多相关文章

  1. jmeter压力测试的简单实例+badboy脚本录制(一个简单的网页用户登录测试的结果)

    JMeter的安装:在网上下载,在下载后的zip解压后,在bin目录下找到JMeter.bat文件,双击就可以运行JMeter. http://jmeter.apache.org/ 在使用jmeter ...

  2. 一个简单的app自动登录Python脚本案例

  3. 写一个shell,自动执行jmeter测试脚本

    贡献一个自己写的shell脚本,很简单,但又可以高效率的自动执行jmeter压测脚本. #!/bin/bash #author:zhangyl #version:V1 #该脚本放置于压测脚本的上一层目 ...

  4. Python之POST登录测试

    不解释,直接上代码: #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @version: v1.0 @author ...

  5. Python+Selenium+Unittest+HTMLTestRunner生成测试报告+发送至邮箱,记一次完整的cnblog登录测试示例,

    测试思路:单个测试集.单个测试汇成多个测试集.运行测试集.生成测试报告.发送至邮箱. 第一步:建立单个测试集,以cnblog登录为例. 测试用例: cnblog的登录测试,简单分下面几种情况:(1)用 ...

  6. C#使用Selenium实现QQ空间数据抓取 登录QQ空间

    经@吃西瓜的星星提醒 首先我们介绍下Selenium Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...

  7. Python selenium自动化测试框架入门实战--登录测试案例

    本文为Python自动化测试框架基础入门篇,主要帮助会写基本selenium测试代码又没有规划的同仁.本文应用到POM模型.selenium.unittest框架.configparser配置文件.s ...

  8. 《手把手教你》系列技巧篇(四十)-java+ selenium自动化测试-JavaScript的调用执行-下篇(详解教程)

    1.简介 在实际工作中,我们需要对处理的元素进行高亮显示,或者有时候为了看清楚做跟踪鼠标点击了哪些元素需要标记出来.今天宏哥就在这里把这种测试场景讲解和分享一下. 2.用法 创建一个执行 JS 的对象 ...

  9. SNF快速开发平台MVC-审核流,审核完成后会给下一个审核人发邮件,下一个审核人可以不登录系统,在邮件里进行审核处理

    审核流设计和使用参考以下资料: 审核流设计 http://www.cnblogs.com/spring_wang/p/4874531.html 审核流实例 http://www.cnblogs.com ...

随机推荐

  1. 解决iconv函数无法转换某些中文的问题

    原文: 解决iconv函数无法转换某些中文的问题 请先看以下代码,这个页面是GB2312编码的: $str = '陶喆';echo 'gb2312-'.$str;echo '<br />' ...

  2. 编解码TIFF图像

    解码: // Open a Stream and decode a TIFF image Stream imageStreamSource = new FileStream("tulipfa ...

  3. BoxedApp Packer 将您的原始应用“打包”成单个完全的可执行二进制文件

    及时应对移动化趋势 在没有安装到本地硬盘驱动的情况下,使用闪存卡.网络文件夹或者可移动磁盘远程启动应用程序通常是一件令人头疼的事,你会发现,应用程序会突然会丢失文件.路径错误或者远程注册表故障等一系列 ...

  4. c# 获取cook

    using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServi ...

  5. Qt之界面数据存储与获取(userData)

    http://blog.csdn.net/u011012932/article/details/52413012#comments

  6. SYN1610型B码时统设备

       SYN1610型B码时统设备 产品概述 SYN1610型B码时统设备是由西安同步电子科技有限公司精心设计.自行研发生产的一款模块化配置的通用性时统终端,可接收北斗/ GPS信号/ IRIG-B码 ...

  7. Spring AOP APIS

    1:Pointcut API in Spring (1):切点接口定义 org.springframework.aop.Pointcut接口是中心接口.用来将Advice(通知)定位到特定的类和方法. ...

  8. Python基础,day3

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 1.函数基本语法及特性 如何不重复代码,其实很 ...

  9. Android自动化测试探索(三)Android SDK tools安装、aapt配置以及使用aapt获取apk包名

    Android SDK tools安装 下载连接: https://www.androiddevtools.cn 找到对应mac的版本下载安装即可 AAPT配置 #1. 进入根目录 cd ~ #2. ...

  10. selenium工作原理详解

    selenium简介 Selenium是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11), ...