# -*- 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的更多相关文章

  1. selenium+python实现自动化登录

    工作需要实现一个微博自动登录的操作,在网上差了一些资料,决定使用selenium+python实现 selenium 是一个web的自动化测试工具,主流一般配合java或者python使用,我这里使用 ...

  2. unittest自动化测试举例:自动读取ymal用例&调用接口并生成报告

    用unittest框架写的接口自动化实现过程: 1.编写ymal格式用例: 2.导入ddt模块,该模块的主要功能是帮你读取ymal用例文件,自动获取内容并循环调用函数,具体见代码. 3.导入Beaut ...

  3. selenium+python自动化之登录案例

    一.登录 1.先打开浏览器 2.打开论坛主页:http://www.hordehome.com/ 3.查找元素之前可以先设置元素等待:implicitly_wait() 4.点登录按钮,弹出登录框 5 ...

  4. Python中读取文件中的json串,并将其写入到Excel表格中

    Json:JavaScript Objective Notation,是一种轻量级的数据交换格式.Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式.现在也常用语http请求中, ...

  5. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

  6. 基于Selenium+Python的web自动化测试框架

    一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...

  7. selenium + python 自动化测试环境搭建

    selenium + python 自动化测试 —— 环境搭建 关于 selenium Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操 ...

  8. selenium+python环境的搭建的自动化测试

    一.安装python: 我安装的是2.7.13版本的:可以在CMD下 运行python命令查看是否安装python,以及安装版本: 在https://www.python.org/getit/这个地址 ...

  9. 自动化测试基础篇--Selenium Python环境搭建

    学习selenium python需要的工具: 1.浏览器 2.Python 3.Selenium 4.FireBug(Firefox) 5.chromedriver.IEDriverServer.g ...

随机推荐

  1. IDEA中类文件显示J,IDEA Unable to import maven project: See logs for details

    今天用了下lemon清理了下垃圾后,IDEA打开项目类文件图标由C变为J,在IDEA右侧的Maven Project中点击刷新提示IDEA Unable to import maven project ...

  2. [转帖]美团在Redis上踩过的一些坑-1.客户端周期性出现connect timeout

    美团在Redis上踩过的一些坑-1.客户端周期性出现connect timeout 博客分类: redis 运维 jedisconnect timeoutnosqltcp  转载请注明出处哈:http ...

  3. [转帖]我花了10个小时,写出了这篇K8S架构解析

    我花了10个小时,写出了这篇K8S架构解析 https://www.toutiao.com/i6759071724785893891/   每个微服务通过 Docker 进行发布,随着业务的发展,系统 ...

  4. IDEA中MavenWeb项目没有新建servlet文件

    解决方案: https://blog.csdn.net/Delicious_Life/article/details/89515363

  5. day54——jquery补充、bootstrap

    day54 jquery 页面载入 window.onload: 原生js的window.onload事件:// onload 等待页面所有内容加载完成之后自动触发的事件 window.onload ...

  6. Linux基础(06)IO复用

    在Windows文件指的就是普通的肉眼可见的文件 , 而Linux一切皆文件 https://blog.csdn.net/nan_nan_nan_nan_nan/article/details/812 ...

  7. 移动端开发之响应式开发和bootstrap基础

    响应式开发 (就是利用媒体查询针对不同宽度的设备进行布局和样式的设置,从而设配不同设备的目的) 响应式布局容器响应式需要一个父级作为布局容器,来配合子级元素来实现变化效果 原理:不同屏幕下,通过媒体查 ...

  8. Spring @Autowired 注入为 null

    原因 配置缺失,比如为开启注解扫描驱动.注入组件为注册: 使用 new 关键字创建的对象不受spring容器管理,无法注入: 注入静态变量, 静态变量/类变量不是对象的属性,而是一个类的属性,spri ...

  9. ubuntu中安装python3和pip

    python3: 在ubuntu的包中,python的二代和三代版本的命名:二代:python,三代:python3 安装python3: sudo apt install python3 同理:pi ...

  10. SpringBoot中使用Interceptor

    https://www.cnblogs.com/chao555/p/9573102.html 1.创建自定义的拦截器并实现HandlerInterceptor接口 package com.demo.c ...