【原创】selenium+python+openpyxl实现登录自动化测试,自动读取excel用例数据,并将数据结果自动写入到excel
# -*- coding: utf-8 -*-
from selenium import webdriver
from openpyxl import load_workbook
from time import sleep
class mylogintest():
'''打开百度测试''' def openBD(self):
'''打开百度'''
print("begin")
book = load_workbook("mylogintest.xlsx") # 默认可读写,若有需要可以指定write_only和read_only为True
b = book.active
datadict = {} #创建一个字典变量
maxC = b.max_column#获取最大列
maxR = b.max_row#获取最大行
for i in range(1, maxC + 1):#range默认从0开始,到后面参数的-1结束,而openpyxl都是从第一行第一列开始的,所以参数为1,maxC+1;意思就是遍历第一列到最后一列,
datadict.setdefault(b.cell(1, i).value)#将第一行中的所有列即2标题作为键放到字典datadict里面
# print(datadict)
for i in range(2, maxR + 1):#除去第一行标题,从第二行遍历到最后一行
for j in range(1, maxC + 1):#从第一列遍历到最后一列
datadict[b.cell(1, j).value] = b.cell(i, j).value#把第二行的内容作为键对应的值放入字典datadict里面
try:
self.driver = webdriver.Firefox()
self.driver.get(datadict["url"])#从对应键里取出对应的URL值,这里的键就是表格的第一行标题,所以EXCEL的标题要按照规定来写
self.driver.find_element_by_xpath("/html/body/div[1]/div/div[1]/div[3]/a[1]/img").click()
if datadict["username"]!=None:
username = self.driver.find_element_by_name("username").send_keys(datadict["username"])#当用户名不为空时,把值放到username文本框中
if datadict["password"] != None:
password = self.driver.find_element_by_name("password").send_keys(datadict["password"])#当密码不为空时,把值放到password文本框中,要判断一下否则会出错
self.driver.find_element_by_id("loginbtn").click()#点击登录
if datadict["checkmeg"]!=None:#当校验值不为空时
msg = self.driver.find_element_by_xpath("/html/body/div[8]/div").text#比对校验值
if msg == datadict['checkmeg']:#如果校验值比对成功,将校验值写入结果
b.cell(i, maxC, msg)
else:
b.cell(i, maxC, '失败')#否则将失败写入结果中
else:#当校验值不为空时
# print(self.driver.switch_to.alert.text)
cur_url = self.driver.current_url#判断当前url
if cur_url == datadict['checkurl']:#如果当前url是校验的url
b.cell(i, maxC, '登录成功') # 就将测试登录成功结果写入表格中
else:
b.cell(i, maxC, '登录失败') # 就将测试登陆失败结果写入表格中
sleep(1)
self.driver.quit() except:
b.cell(i, maxC, 'error')#当程序出现错误时,将错误结果写入表格中 book.save("mylogintest.xlsx")#最后记得关闭 print("end") mylogintest().openBD()

大体思路:
将登陆分为两种情况:一种是登陆成功的情况,一种是登陆失败的情况,如果是登陆成功的checkmeg为空,比对checkurl,如果是登录失败的,直接比对checkmeg,然后将执行结果写入表格中;
脚本中直接判断checkmeg是否为空就行,根据checkmeg是否为空,用不同的方式比对两种情况,最终得到结果;
【原创】selenium+python+openpyxl实现登录自动化测试,自动读取excel用例数据,并将数据结果自动写入到excel的更多相关文章
- selenium+python实现自动化登录
工作需要实现一个微博自动登录的操作,在网上差了一些资料,决定使用selenium+python实现 selenium 是一个web的自动化测试工具,主流一般配合java或者python使用,我这里使用 ...
- unittest自动化测试举例:自动读取ymal用例&调用接口并生成报告
用unittest框架写的接口自动化实现过程: 1.编写ymal格式用例: 2.导入ddt模块,该模块的主要功能是帮你读取ymal用例文件,自动获取内容并循环调用函数,具体见代码. 3.导入Beaut ...
- selenium+python自动化之登录案例
一.登录 1.先打开浏览器 2.打开论坛主页:http://www.hordehome.com/ 3.查找元素之前可以先设置元素等待:implicitly_wait() 4.点登录按钮,弹出登录框 5 ...
- Python中读取文件中的json串,并将其写入到Excel表格中
Json:JavaScript Objective Notation,是一种轻量级的数据交换格式.Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式.现在也常用语http请求中, ...
- selenium + python自动化测试unittest框架学习(二)
1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...
- 基于Selenium+Python的web自动化测试框架
一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...
- selenium + python 自动化测试环境搭建
selenium + python 自动化测试 —— 环境搭建 关于 selenium Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操 ...
- selenium+python环境的搭建的自动化测试
一.安装python: 我安装的是2.7.13版本的:可以在CMD下 运行python命令查看是否安装python,以及安装版本: 在https://www.python.org/getit/这个地址 ...
- 自动化测试基础篇--Selenium Python环境搭建
学习selenium python需要的工具: 1.浏览器 2.Python 3.Selenium 4.FireBug(Firefox) 5.chromedriver.IEDriverServer.g ...
随机推荐
- Javascript / Nodejs call 和 apply
call: 改变了函数运行的作用域,即改变函数里面this的指向apply:同call,apply第二个参数是数组结构 例如: this.name = 'Ab'var obj = {name: 'BB ...
- android问题总结:
1. android:focusableInTouchMode="true" 属性: 控制 子view不获取焦点: <android.support.v4.widget. ...
- php删除目录及目录下的内容
今天遇到一个问题: java写的API,ppt转图片生成的目录和文件 在使用php调用API完成后,再使用php进行删除时,遇到了删除失败的问题 部署的环境是Ubuntu 导致删除失败的原因是权限的问 ...
- springboot 控制台程序读取配置文件(原创)
首先新建一个springboot项目,此处省略. 1.新建一个application.properties person.name=kevin person.age=6 person.sex=male ...
- python快速开始一-------常见的数据类型
前置条件:已经安装好python程序 常用的数据类型 Python常见的数据类型: 整数:就是我们数学里面的整数,比如3455,python目前支持最大的32bit或者64bit 长整数(long): ...
- [转帖]使用 Vagrant 打造跨平台开发环境
使用 Vagrant 打造跨平台开发环境 https://segmentfault.com/a/1190000000264347 Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/p ...
- 嵌入式02 STM32 实验09 独立/窗口看门狗
一.独立看门狗和窗口看门狗 看门狗:单片机系统在外界的干扰下会出现程序跑飞的现象导致死循环,或者崩溃,看门狗电路就是为了避免这种情况的发生,看门狗的作用就是在一定的事件内(通过计数器实现)若没有收到喂 ...
- Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查
本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...
- 最少硬币数——Java
问题:有n种硬币,面值分别为v1,v2,v3,…,vn,存于数组T[1:n]中,可以使用的各种面值的硬币个数存于数组Coins[1:n]中.对任意钱数0≤m≤20001,设计一个用最少硬币找钱m的方法 ...
- football Alternative form of foteball
football. Alternative form of foteball foteball(Late Middle English) football (game played with a ba ...