一、基本逻辑

1.自动填写用户名和密码登录成功后跳转到相应页面

2.验证相应页面的url与给定的url是否一致,如果一致则测试通过,如果不一致则不通过

二、以jenkins登陆界面为例,代码如下

 from selenium import webdriver
import unittest
from selenium.webdriver.support.wait import WebDriverWait class TestLogin(unittest.TestCase):
# 指定浏览器
def setUp(self):
self.driver = webdriver.Firefox(executable_path="F:\Program Files (x86)\Mozilla Firefox\geckodriver.exe")
# 打开url
self.driver.get("http://192.168.1.151:8080/login?from=%2F") # 登录操作
def test_login(self):
username = "test001"
password = "pass001" # 执行登录操作
#用户名的定位
WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_id('j_username')).clear()
WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_id('j_username')).send_keys(username)
#密码的定位
WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_name('j_password')).clear()
WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_name('j_password')).send_keys(password)
# 点击登录
self.driver.find_element_by_id("yui-gen1-button").click()
# 登录成功断言
currUrl = self.driver.current_url
print("currUrl"+currUrl)
if currUrl == "http://192.168.1.151:8080/":
print("success")
else:
print("failure") # 关闭浏览器
def tearDown(self):
self.driver.quit() if __name__ == "__main__":
unittest.main()

三、用例详解

用例主要分为3块:

def setUp(self):函数setUp中,为执行用例前准备操作
def test_login(self):函数test_login中,为用例的具体操作步骤+用例执行后的断言判断操作
def tearDown(self):函数tearDown中,为用例执行完成的还原环境操作 值得一讲的为用户名的定位语句:
WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_id('j_username')).clear() //找到用户名的值,把值清空
WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_id('j_username')).send_keys(username) //将username的值写入用户名值中 WebDriverWait:10秒钟内每隔0.5秒去页面找id=j_username属性的值,超过10秒则报错,有效的避免了页面加载延迟导致找不到对应值的bug find_element_by_id:表示通过id属性去找(鼠标放在用户名框的位置-->右键-->属性),如下图:

四、执行结果

由于此处设置的用户名,密码无效,故返回失败,如下图:(在执行过程中可以看到在火狐中有打开浏览器的一系列操作)

五、用例调试

可以通过在pycharm中进入Python Console中一句一句的执行用例语句,进行用例调试并查看用例每一步操作现象

selenium+python自动化用例登陆界面模板的更多相关文章

  1. python自动化用例框架搭建--目录结构规划

    目录结构搭建 Test_framework |--config(配置文件) |--data(数据文件) |--drivers(驱动) |--log(日志) |--report(测试报告) |--tes ...

  2. 2020,8种必备Selenium编写自动化用例的技巧

    在开始自动化时,您可能会遇到各种可能包含在自动化代码中的方法,技术,框架和工具.有时,与提供更好的灵活性或解决问题的更好方法相比,这种多功能性导致代码更加复杂.在编写自动化代码时,重要的是我们能够清楚 ...

  3. 纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例

    查看完整文章点击原文链接:纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例 你是否还在用postman\jmeter做接口自动化吗?用python的开源框架[unit ...

  4. python+requests+yaml实现接口自动化用例

    前言:最近也思考了一下怎么做接口自动化,以下内容属于自己目前阶段所学习到的内容,也逐渐投入自己实际工作中,把最近的学习新得跟大家分享下,话不多说,切入正题. 对接口自动化测试用例的思考:接口测试大多测 ...

  5. python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)

    经过之前的学习铺垫,我们尝试着利用pytest框架编写一条接口自动化测试用例,来厘清接口自动化用例编写的思路. 我们在百度搜索天气查询,会出现如下图所示结果: 接下来,我们以该天气查询接口为例,编写接 ...

  6. Android UI自动化用例设计技巧

    一.封装方法 1.编程如何越来越快: 首先,需要经验丰富,知识面广. 其次,每一个熟练编程的人员,都会有自己的一个库,解决各种问题.各种通用的方法函数. 同理,自动化脚本也是编程,测试用例则为需求,U ...

  7. 【Robot Framework 项目实战 03】使用脚本自动生成统一格式的RF自动化用例

    背景 虽然大家都已经使用了统一的关键字,但是在检查了一些测试用例之后,还是发现因为大家对RF的熟悉程度不一导致的测试用例颗粒度差异很大的情况:而且在手动方式转化测试用例过程中,有不少工作是完全重复的且 ...

  8. 【UI】自动化用例设计技巧

    需要封装的方法: 公共的操作方法 经常使用的步骤:超过两次以上 经常使用的组件:输入框.文本框.列表 经常操作的布局:多个组件组成通用的布局 经常操作的页面:ui页面由一个一个单独Activity组成 ...

  9. pytest文档30-功能用例与自动化用例完美对接(allure)

    前言 做自动化做久了,经常会思考一个问题,到底别人是怎么做的自动化,跟自己的有啥不一样,看过不少书和资料,都是停留在demo的层面. 真正把自动化做的好的大牛又不屑于分享自己的劳动成果,所以大部分情况 ...

随机推荐

  1. Linux - mysql 异常: ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

    问题描述 ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists 解决方案 删除:/var/lock/su ...

  2. RN开发-Linux开发环境搭建(Ubuntu 12.04)

    1.首先安装JDK 2.安装Android开发环境 3.安装node.js 3.1 官网下载 : node-v6.9.1-linux-x64 3.2 添加环境变量 sudo vi /etc/profi ...

  3. html5 流式布局 弹式布局 flex

      <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8& ...

  4. 洛谷P1372 又是毕业季I

    https://www.luogu.org/problem/P1372 #include<bits/stdc++.h> using namespace std; long long n,k ...

  5. 《深入理解Java虚拟机》读书笔记九

    第十章 早期(编译期)优化 1.Javac的源码与调试 编译期的分类: 前端编译期:把*.java文件转换为*.class文件的过程.例如sun的javac.eclipseJDT中的增量编译器. JI ...

  6. 《深入理解Java虚拟机》读书笔记一

    第二章 Java内存区域与内存溢出异常 1.运行时数据区域 程序计数器: 当前线程所执行的字节码的行号指示器,用于存放下一条需要运行的指令. 运行速度最快位于处理器内部. 线程私有. 虚拟机栈: 描述 ...

  7. plt/sns draw histgram

    当使用如下代码保存使用 plt.savefig 保存生成的图片时,结果打开生成的图片却是一片空白. import matplotlib.pyplot as pltx = np.triu(ged) # ...

  8. 用html5自带表单验证 并且用ajax提交的解决方法(附例子)

    用submit来提交表单,然后在js中监听submit方法,用ajax提交表单最后阻止submit的自动提交. 在标准浏览器中,阻止浏览器默认行为使用event.preventDefault(),而在 ...

  9. 以POST方式发送

    URL url = null; String inputLine = null; HttpURLConnection httpurlconnection = null; try { //取上级电警平台 ...

  10. <<甄嬛传>>后感

    2020年疫情和休假的时间里,刷了几部喜欢的电视剧,从<好先生>孙红雷和车晓的现代剧,到刷了至少6遍的<新三国>后,一直想了解司马懿和曹丕,接着就到了<大军师司马懿之军师 ...