公共登录/退出函数模块(login_exit.py):

#coding:utf-8
import time
def login(driver, username, password):#此处的driver是个形参,如果不在此处定义就不可以使用
    driver.find_element_by_link_text("登录").click()
#输入用户名
driver.find_element_by_css_selector("#input1").send_keys(username)
time.sleep(2)
#输入密码
driver.find_element_by_css_selector("#input2").send_keys(password)
# 点击登录
time.sleep(2)
driver.find_element_by_id("signin").click() def exit(driver):
time.sleep(2)
driver.find_element_by_link_text("退出").click()
time.sleep(2)
t = driver.switch_to.alert
time.sleep(2)
#print(t.text)
t.accept()
time.sleep(2)

用例模块(test.py):

#coding:utf-8
from selenium import webdriver
import unittest,time
from l_and_q import login_exit
class Test_Log(unittest.TestCase): '''测试类,是多个测试用例的集合,可以把一些相同的操作写成一个类,test_suit'''
    def setUp(self):
url="https://www.cnblogs.com/"
self.option = webdriver.ChromeOptions()
self.option.add_argument('lang=zh_CN.UTF-8')
self.option.add_argument('User-Agent:"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"')
self.driver = webdriver.Chrome(chrome_options=self.option)
self.driver.get(url)
def test_1log(self): #登录失败
#调用login函数,并向它传参
login_exit.login(driver=self.driver, username=u"uname", password=u"flasepwd")
time.sleep(2)
#实际结果
actual_result=self.driver.find_element_by_css_selector("#tip_btn").text
print("实际结果为:"+actual_result)
time.sleep(2)
#预期结果
expected_result = u"用户名或密码错误\n\n联系 contact@cnblogs.com"
print("预期结果为:" + expected_result)
time.sleep(2)
self.assertEqual(actual_result,expected_result,msg="实际结果(%s)与预期结果(%s)不一致"%(actual_result,expected_result)) def test_2log(self): #登录成功
#调用login函数,并向它传参
login_exit.login(driver=self.driver, username=u"uname", password=u"truepwd") time.sleep(2)
#实际结果
actual_result=self.driver.find_element_by_css_selector("#span_userinfo>a:nth-child(1)").text
print("\n实际结果为:"+actual_result)
#预期结果
expected_result="女林"
print("预期结果为:"+expected_result)
self.assertEqual(actual_result,expected_result,msg="实际结果(%s)与预期结果(%s)不一致"%(actual_result,expected_result))
time.sleep(2)
#调用login_exit模块中的exit函数
login_exit.exit(driver=self.driver)
time.sleep(2)
# def test_3log(self): #退出账号成功
# login_exit.login(driver=self.driver, username=u"uname", password=u"truepwd")
    #     login_exit.exit(driver=self.driver)
# time.sleep(2)
# #实际结果
# actual_result=self.driver.find_element_by_css_selector("#span_userinfo>a:nth-child(1)").text
# print("\n实际结果为:"+actual_result)
# self.assertTrue(actual_result)
# # #预期结果
# # expected_result="登"
# # print("预期结果为:"+expected_result)
# # self.assertIn(expected_result,actual_result,msg="实际结果(%s)与预期结果(%s)不一致"%(expected_result,actual_result))
# time.sleep(2)
def tearDown(self):
self.driver.quit() if __name__=="__main__":
unittest.main()

												

把登录和退出功能单独写到一个公共.py脚本,其它用例test1,test2调用公共登录,退出函数的更多相关文章

  1. 基于七牛Python SDK写的一个批量下载脚本

    前言 上一篇基于七牛Python SDK写的一个同步脚本所写的脚本只支持上传,不支持文件下载. 虽然这个需求不太强烈,但有可能有人(在备份.迁移时)需要,而官方有没提供对应的工具,所以我就把这个功能也 ...

  2. 自己写的一个tomcat发布脚本

    闲来无事,就自己写一个shell脚本,方便自己以后在服务器上部署tomcat下的项目.我本地用maven打包,然后每次都要人工去切换一堆堆目录,有点繁琐,所以我写了下面的shell脚本. #! /bi ...

  3. 写了一个RenderInBackground的脚本

    某主管希望write节点有多线程渲染的功能,而nuke中的render in background功能恰恰可以多个渲染任务同时执行,于是我考虑使用这个方法来实现. 调 试过程中发现renderinba ...

  4. python3 写的一个压测脚本(有待开发)

    import requests import queue import threading import time status_code_list = [] exec_time = 0 class ...

  5. python+imageMagick写的一个压缩图片脚本

    !/usr/bin/python import os import cPickle as p import re import Image def imageCompre(imagedir = '.' ...

  6. go语言实战教程之管理员查询功能、退出功能

    前面第10节课内容中已经学习开发完成了管理员登陆功能.本节课我们将继续学习开发完成管理员信息查询功能.管理员退出功能 管理员信息查询功能 请求及路由映射 管理员信息查询接口 接口名称:获取管理员信息. ...

  7. 写了一个hiero中添加自定义Token的脚本

    Hiero自带Token往往不够用,shotname中自带版本号的情况下要升级版本会很麻烦,比如Shot_0001_v001这样一个序列名,要升级为Shot_0001_v002就必须把_v001之前的 ...

  8. SpringBoot开发十-开发登录,退出功能

    需求介绍-开发登录,退出功能 访问登录页面:点击头部区域的链接打开登录页面 登录: 验证账号,密码,验证码 成功时生成登录凭证发放给客户端,失败时跳转回登录页面 退出: 将登录状态修改为失效的状态 跳 ...

  9. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

随机推荐

  1. 01-spring-专题IOC

    接口: 1,用于沟通的中介物的抽象化 2,实体把自己提供给外界的一种抽象化说明,用以内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式(内部可能修改了,但是接口不变). 简 ...

  2. 《Javascript权威指南》学习笔记之十九--HTML5 DOM新标准---处理文档元信息和管理交互能力

    一.了解DOM 1.DOM是Document Object Model的缩写,即文档对象类型,是文档在内存中的表示形式,是一个应用程序接口,定义了文档的逻辑结构以及一套訪问和处理文档的方法. 2.HT ...

  3. Could not create and/or set value back on to object .

    严重: Error building beanorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creat ...

  4. 解决在IE9,IE10浏览器下,程序没有任何错误,easy ui页面不加载任何数据的问题

    对于web应用程序,经常用到开发人员工具,按F12,可以调试脚本,可以查看监视网络,查看各页面加载时间,非常方便,今天在调试js时,不小心打开了兼容性视图, 之后每次打打开页面时,均不显示页面post ...

  5. Android TCP/IP Socket Test

    TCP/IP协议:Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本 ...

  6. Maven打jar包的三种方式

    Maven打jar包的三种方式 不包含依赖jar包 该方法打包的jar,不包含依赖的jar包,也没有指定入口类. <build> <plugins> <plugin> ...

  7. 服务容器——laravel服务器容器(未完)

    参考: https://www.insp.top/learn-laravel-container https://www.cnblogs.com/lilili/p/6953749.html

  8. PHP REST架构简单设计

    REST是什么? REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性. REST的特点 ...

  9. 分布式系统的CAP和BASE理论

    1. 背景 网络分区:俗称“脑裂”.当网络发生异常情况,导致分布式系统中部分节点之间的网络延时不断变大,最终导致组成分布式系统的所有节点中,只有部分节点之间能够进行正常通信,而另一些节点则不能. 当网 ...

  10. c语言循环单链表

    /************************************************************************* > File Name: singleLin ...