一、基本逻辑

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. HTML表格显示的笔记

    有时需要显示的复杂表头 如图所示  <table id="" cellpadding="0" cellspacing="0" bord ...

  2. 1.spring源码-BeanPostProcessor后置处理器

    1.BeanPostProcessor接口的介绍: BeanPostProcessor是一个接口,其中有两个方法,postProcessBeforeInitialization和postProcess ...

  3. AcWing 894. 拆分-Nim游戏

    #include <cstring> #include <iostream> #include <algorithm> #include <unordered ...

  4. Django中content-type组件的使用

    content-type组件 ContentType是Django的内置的一个应用,可以追踪项目的所有APP和model的对应关系,并记录在ContentTpe表中,当我们的项目做数据迁移后,会有很多 ...

  5. normalization, standardization and regularization

    Normalization Normalization refers to rescaling real valued numeric attributes into the range 0 and ...

  6. linux异常

    常见报错语句 Command not found; - 找不到命令(敲入的命令有误或者该命令还没安装) No Such file or directory; - 找不到输入的文件或者目录

  7. 使用Vue-MUI轮播图失效问题解决案例(在Vue的update中执行)

    我使用的是mui+vue,社区关于轮播图失效的问题也有几个.我这边遇到的一个情况是我把所有的东西都写到plusReady事件中会导致轮播图搞死都不动,按照其他问答解决了vue生命周期等等的问题.提出来 ...

  8. JS高级---函数作为返回值使用

    函数作为返回值使用 function f1() { console.log("f1函数开始"); return function () { console.log("函数 ...

  9. JSON.toJSONString(Object object,SerializerFeature...features)详解

    D package myProject; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; ...

  10. AcWing 830. 单调栈

    https://www.acwing.com/problem/content/832/ #include <iostream> using namespace std; ; int stk ...