selenium+python自动化用例登陆界面模板
一、基本逻辑
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自动化用例登陆界面模板的更多相关文章
- python自动化用例框架搭建--目录结构规划
目录结构搭建 Test_framework |--config(配置文件) |--data(数据文件) |--drivers(驱动) |--log(日志) |--report(测试报告) |--tes ...
- 2020,8种必备Selenium编写自动化用例的技巧
在开始自动化时,您可能会遇到各种可能包含在自动化代码中的方法,技术,框架和工具.有时,与提供更好的灵活性或解决问题的更好方法相比,这种多功能性导致代码更加复杂.在编写自动化代码时,重要的是我们能够清楚 ...
- 纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例
查看完整文章点击原文链接:纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例 你是否还在用postman\jmeter做接口自动化吗?用python的开源框架[unit ...
- python+requests+yaml实现接口自动化用例
前言:最近也思考了一下怎么做接口自动化,以下内容属于自己目前阶段所学习到的内容,也逐渐投入自己实际工作中,把最近的学习新得跟大家分享下,话不多说,切入正题. 对接口自动化测试用例的思考:接口测试大多测 ...
- python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)
经过之前的学习铺垫,我们尝试着利用pytest框架编写一条接口自动化测试用例,来厘清接口自动化用例编写的思路. 我们在百度搜索天气查询,会出现如下图所示结果: 接下来,我们以该天气查询接口为例,编写接 ...
- Android UI自动化用例设计技巧
一.封装方法 1.编程如何越来越快: 首先,需要经验丰富,知识面广. 其次,每一个熟练编程的人员,都会有自己的一个库,解决各种问题.各种通用的方法函数. 同理,自动化脚本也是编程,测试用例则为需求,U ...
- 【Robot Framework 项目实战 03】使用脚本自动生成统一格式的RF自动化用例
背景 虽然大家都已经使用了统一的关键字,但是在检查了一些测试用例之后,还是发现因为大家对RF的熟悉程度不一导致的测试用例颗粒度差异很大的情况:而且在手动方式转化测试用例过程中,有不少工作是完全重复的且 ...
- 【UI】自动化用例设计技巧
需要封装的方法: 公共的操作方法 经常使用的步骤:超过两次以上 经常使用的组件:输入框.文本框.列表 经常操作的布局:多个组件组成通用的布局 经常操作的页面:ui页面由一个一个单独Activity组成 ...
- pytest文档30-功能用例与自动化用例完美对接(allure)
前言 做自动化做久了,经常会思考一个问题,到底别人是怎么做的自动化,跟自己的有啥不一样,看过不少书和资料,都是停留在demo的层面. 真正把自动化做的好的大牛又不屑于分享自己的劳动成果,所以大部分情况 ...
随机推荐
- DataGrid 的DataSource重新加载数据
DataGrid 的DataSource重新加载数据,若直接重新给DataSource赋值是没有效果的,若只是修改原有数据中的单个值,此方法有效,但是针对完全不一样的数据直接重新赋值的方式是无效的,此 ...
- 0120 springboot集成Mybatis和代码生成器
在日常开发中,数据持久技术使用的架子使用频率最高的有3个,即spring-jdbc , spring-jpa, spring-mybatis.详情可以看我之前的一篇文章spring操作数据库的3个架子 ...
- FOJ-2013 A Short Problem (前缀和)
Problem Description The description of this problem is very short. Now give you a string(length N), ...
- 对json 数据的处理
今天一个任务是,从一个指定接口中获取 json 字符串,并将其中指定的数据,以列表的形式表示出来. 唯一注意:json 字符串,需要先转换成 json 对象. var json对象= eval('( ...
- two pointers思想 ---- 利用两个i, j两个下标,同时对序列进行扫描,以O(n)复杂度解决问题的一种思想
two pointers思想 ---- 利用两个i, j两个下标,同时对序列进行扫描,以O(n)复杂度解决问题的一种思想, 如果能用这种思想解决问题,那么会大大降低程序的复杂度. 两个利用这个思想的例 ...
- Linux下基于PAM机制的USB Key的制作
摘自:https://server.zzidc.com/fwqpz/157.html USB Key这个概念最早是由加密锁厂家提出来的,加密锁是用来防止软件盗版的硬件产品,加密锁的概念是使安装在计算机 ...
- WPF:MVVM模式下ViewModel调用View
两种基本方法: 消息通知和参数传递 一.消息通知 利用View里的IsEnable属性 原理是这样的: 1.UI中的IsEnabled绑定VM中的属性 2.UI的后台代码中,注册IsEnableCha ...
- JQ 获取浏览器窗口宽高
$(window).height(); // 浏览器时下窗口可视区域高度 $(document).height(); //浏览器时下窗口文档的高度 $(document.body).height(); ...
- 数据库之一、数据库简介及SQL概要
1.数据库简介: 数据库(Database,DB)是一个长期存储在计算机内的.有组织的.有共享的.统一管理的数据集合.简单来讲就是可以放大量数据的地方.管理数据库的计算机系统称为数据库管理系统(Dat ...
- java.util.UUID工具类
生成数据表的主键Id会用到此工具类 /** * <获取主鍵> * <获取32位UUID> * @return * @see [类.类#方法.类#成员] */ public st ...