selenium基础(获取验证信息-断言)
获取验证信息
- 实际结果与预期结果进行比较称之为断言
- 通过获取title、URL、text等信息进行断言
- text方法用于获取标签对之间的文本信息
from selenium import webdriver
import time driver=webdriver.Firefox()
driver.maximize_window()
driver.get("https://www.baidu.com")
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
time.sleep(2)
text=driver.find_element_by_class_name('nums_text').text
#判断结果是否正确,如果不正确截图
if '百度23523找到相关结果约' in text:
print("pass")
else:
driver.get_screenshot_as_file('D:\\test.png')
print('error')
driver.quit()
assert断言方法
python assert断言是声明布尔值必须为真的判定,如果发生异常就说明表达式为假。
可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常。
- self.assertEqual(a,b,msg=msg) #判断a与.b是否一致,msg类似备注,可以为空
- self.assertNotEqual(a,b,msg=msg) #判断a与b是否不一致
- self.assertTrue(a,msg=none) #判断a是否为True
- self.assertFalse(b,msg=none) #判断b是否为false
- self.assertIn(a,b) 判断a in b是否成立,正确则True,否则为False
例: assertIn(“2” in “23”) 成功
assertIn(“1” in “23”) 失败
- self.assertNotIn(a,b) 判断a in b是否成立,不成立则True 否则 False
例:assertIn(“2” in “23”) 失败
assertIn(“1” in “23”) 成功
- self.assertIs(a,b) 判断a 与b的对象是否相同,成立则True,否则False
注,判断是否同一对象 id(a) 若id相同,则为同一对象
例 a,b=1,1.0
assertls(a,b) 失败
a,b=1,1
assertls(a,b) 成功
- self.assertIsNot(a,b) 判断a 与b的对象是否相同,不成立True,否则False
- self.assertDictEqual(a,b) #判断字典a和字典b是否相等,a,b为字典
- self.assertDictContainsSubset
- self.assertItemsEqual(a,b) #比较两字符串是否一致,同sorted(a)==sorted(b)
注:sorted排序,方法内部为,将a,b分别list,生成各自列表,在sorted排序在比对
- self.assertMultiLineEqual(a,b) #比较a文本与b文本是否一致,即便多了个换行,也会区分
- self.assertLess(a,b) #判断a<b 成立则通过,否则失败
- self.assertLessEqual #判断a<=b 成立则通过,否则失败
- self.assertGreater #判断a>b 成立则通过,否则失败
- self.assertGreaterEqual #判断a>=b 成立则通过,否则失败
- self.assertIsNone(obj=””) #判断obj=None 成立则通过,否则失败
- self.assertIsNotNone #判断obj=None 成立则失败,否则通过
- self.assertIsInstance(a,b) #判断a的数据类型是否为b,isinstance(a,b) 成立则通过,否则失败
- self.assertNotIsInstance #判断同上相反
- self.assertRaisesRegexp #正则判断匹配,没仔细看,过程复杂
- self.assertRegexpMatches(a,b) #正则匹配 同re.search(b,a)匹配有则成功,否则失败
注:a为匹配的正则表达式,必须字符型,b 为要匹配的内容
- self.assertNotRegexpMatches #同上,判断相反
- self.assertAlmostEqual(a,b,places=none,msg=none,delta=none) #该判断过程有点复杂,判断过程如下
注:places与delta不能同时存在,否则出异常
#若a==b,则直接输入正确,不判断下面的过程
#若delta有数,places为空,判断a与b的差的绝对值是否<=delta,满足则正确,否则错误
#若delta为空,places有数,判断b与a的差的绝对值,取小数places位,等于0则正确,否则错误
#若delta为空,places为空,默认赋值places=7判断
例 assertAlmostEqual(2,2) 正确,
assertAlmostEqual(5,2,delta=4) 正确
assertAlmostEqual(5,2,delta=2) 错误
assertAlmostEqual(2,2.005,places=1) 正确
assertAlmostEqual(2,2.05,places=3) 错误
- self.assertNotAlmostEqual(a,b,places=none,msg=none,delta=none) 同上,但判断相反
注,delta与places不能同时存在,否则抛出异常
例 assertNotAlmostEqual(2,2) 错误
assertNotAlmostEqual(a,b,delta=c) #a不等于b 同时 a-b>c 则正确,否则错误
assertNotAlmostEqual(a,b,places=2)
#a不等于b 同时|b-a|*0,01 不等于0 则正确,否则错误
如何为assert断言语句添加异常参数
assert的异常参数,其实就是在断言表达式后添加字符串信息,用来解释断言并更好的知道是哪里出了问题。格式如下:
assert expression [, arguments]
assert 表达式 [, 参数]
assert len(lists) >=5,'列表元素个数小于5'
assert 2==1,'2不等于1'
unittest
Python自带的unittest单元测试框架就有了自己的断言方法self.assertXXX(),而且不推荐使用assert XXX语句。
selenium 三种断言以及异常类型
selenium 提供了三种模式的断言:assert 、verify、waitfor
Assert 失败时,该测试将终止。
Verify 失败时,该测试将继续执行,并将错误记入日显示屏 。也就是说允许此单个 验证通过。确保应用程序在正确的页面上
Waitfor 用于等待某些条件变为真。可用于 AJAX 应用程序的测试。
如果该条件为真,他们将立即成功执行。如果该条件不为真,则将失败并暂停测试。直到超过当前所设定的超过时间。一般跟setTimeout时间一起使用
断言常用的有:
assertLocation(判断当前是在正确的页面)、
assertTitle(检查当前页面的 title 是否正确)、
assertValue(检查 input 的值, checkbox 或 radio,有值为”on”无为”off”)、
assertSelected(检查 select 的下拉菜单中选中是否正确)、
assertSelectedOptions(检查下拉菜单中的选项的是否正确)、
assertText(检查指定元素的文本)、
assertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)、
assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)、
assertAttribute(检查当前指定元素的属性的值)、
assertTable(检查 table 里的某个 cell 中的值)、
assertEditable(检查指定的 input 是否可以编辑)、
assertNotEditable(检查指定的 input 是否不可以编辑)、
assertAlert(检查是否有产生带指定 message 的 alert 对话框)、
verifyTitle (检查预期的页面标题)
verifyTextPresent (验证预期的文本是否在页面上的某个位置)
verifyElementPresent(验证预期的UI元素,它的HTML标签的定义,是否在当前网页上)
verifyText(核实预期的文本和相应的HTML标签是否都存在于页面上)
verifyTable(验证表的预期内容)
waitForPageToLoad(暂停执行,直到预期的新的页面加载)
waitForElementPresent (等待检验某元素的存在。为真时,则执行。)
验证和断言的区别:验证失败后不影响脚本的继续执行,断言失败后将停止脚本的执行。
异常类型
AssertionError:assert语句失败
AttributeError:试图访问一个对象没有的属性
IOError:输入输出异常,基本是无法打开文件
ImportError:无法引入模块或者包,基本是路径问题
IndentationError:语法错误,代码没有正确的对齐
IndexError:下标索引超出序列边界
KeyError:试图访问字典里不存在的键
KeyboadrInterrupt:Ctrl+c被按下
NameError:使用一个还未赋值对象的变量
SyntaxError:python代码逻辑语法错误,不能执行
TypeError:传入的对象类型与要求不符
UnboundLocalError:试图访问一个还未设置的全局变量,基本上是由于另有一个同名的全局变量,导致你以为在访问
ValueError:传入一个不被期望的值,即使类型正确
在unittest单元测试框架中,TestCase类提供了一些方法来检查并报告故障

import unittest
class Assert_test(unittest.TestCase):
def test_case(self):
num = int(input("Enter a number"))
try:
self.assertEqual(num,10)#判断两个数值是否相等
except AssertionError:
print('这个数字不是10')
if __name__ == "__main__":
unittest.main()
selenium基础(获取验证信息-断言)的更多相关文章
- Python+selenium之获取验证信息
通常获取验证信息用得最多的几种验证信息分别是title,URL和text.text方法用于获取标签对之间的文本信息. 代码如下: from selenium import webdriverimpor ...
- python基础——获取对象信息
python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...
- Python+Selenium自动化-获取页面信息
Python+Selenium自动化-获取页面信息 1.获取页面title title:获取当前页面的标题显示的字段 from selenium import webdriver import t ...
- webdriervAPI(获取验证信息)
from selenium import webdriver driver = webdriver.Chorme() driver.get("http://www.baidu.co ...
- Python+selenium之获取请求信息
basicConfig()所捕获的log信息.不过其开启的debug模式只能捕获到客户端像服务器发送的post()请求,而无法获取服务器所返回的应答信息. from random import ran ...
- Selenium自动化获取WebSocket信息
性能日志 ChromeDriver支持性能日志记录,您可以从中获取域“时间轴”,“网络”和“页面”的事件,以及指定跟踪类别的跟踪数据. 启用性能日志 默认情况下不启用性能日志记录.因此,在创建新会话时 ...
- selenium基础 --获取内容
from time import sleep from selenium import webdriver browser = webdriver.Chrome() url = "http: ...
- selenium IDE 命令二(断言、验证、等待、变量)
测试用例需要做断言和验证,在seleniumIDE中提供了断言和验证来对结果进行比较 首先通过打开seleniumIDE,在页面任意一个元素右键,选择最后一个选项“show all available ...
- Selenium 2自动化测试实战12(获得验证信息)
一.获得验证信息 通常用的最多的几种验证信息分别是:title.URL和text 运行脚本之后,结果如下图所示: #coding:utf-8 from selenium import webdrive ...
随机推荐
- 单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件)
单独编译和使用webrtc音频降噪模块(附完整源码+测试音频文件) 单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件) 说实话很不想写这篇文章,因为这和我一贯推崇的最好全部编译并使用w ...
- 干货满满!解密阿里云RPA (机器人流程自动化)的产品架构和商业化发展
阿里云RPA,作为阿里云自研8年的技术,在资本的热捧下,逐渐从幕后来到台前,成为企业服务市场的黑马.本文将从产品上全面剖析,阿里云RPA这款产品的现阶段情况,同时简单谈谈阿里云RPA的商业化进展. 阿 ...
- Java语法清单-快速回顾(开发)
Java CheatSheet 01.基础 hello,world! public static void main(String[] args) { System.out.println(" ...
- hdu多校第一场 1006 (hdu6583)Typewriter dp/后缀自动机
题意: 有个打字机,在当前字符串后新加一个字花费p,把当前字符串的一个连续子串拷贝到当前字符串的末尾花费q,给定一个字符串,求用打字机打出这个字符串的最小花费. 题解: 容易想到用dp 记dp[i]为 ...
- LeetCode 620. Not Boring Movies (有趣的电影)
题目标签: 题目给了我们一个 cinema 表格, 让我们找出 不无聊的电影,并且id 是奇数的,降序排列. 比较直接简单的,具体看code. Java Solution: Runtime: 149 ...
- hive表操作(转)
转载于:http://blog.csdn.net/lovelovelovelovelo/article/details/52234971 数据类型 基本数据类型 集合类型,array.map.stru ...
- RouterOS视频教程下载
下载信息 名称:RouterOS视频教程下载 格式:MP4 版本:V1.0 https://pan.baidu.com/s/1skU6oW1 下载密码:nb97
- A1075 PAT Judge (25 分)
The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...
- 利用DOM节点找对象和直接在标签属性中调函数传值this的书写区别
同样的功能,不同的书写格式. 1.个人觉得比较繁琐的写法,但是比较常见,特别是在大项目的时候常用的就是这种方法: <div id="mouse" onmouseover=&q ...
- Win7+Ubuntu11.10(EasyBCD硬盘安装)----转载
Win7+Ubuntu11.10(EasyBCD硬盘安装) ubuntu 下载地址:http://mirrors.163.com/ubuntu-releases/12.04/ 1)首先还是分区,在计算 ...