python selenium系列(五)

2020-01-06 16:56:47 浏览数 (1)

前言

提起断言,接触过软件测试相关工种的同学们,一定不会陌生。比如,功能测试/自动化测试判断用例是否通过,靠的就是检查测试结果与预期是否一致;稍微不同的是,功能测试的结果检查是由人工完成的,而自动化测试是通过预先把期望结果写入脚本,并与实际执行结果进行比对来完成的。这个比对的行为就是断言,依据断言的结果是True或False判定用例执行通过或失败。

在selenium系列的前四节,主要讲解selenium核心的元素定位和操作技术,然而,如果自动化脚本缺少断言,就无法准确获得脚本的运行过程中是否存在非预期的情况,脚本本身就不能很好完成功能回归的使命。

断言分类

断言的本质是验证某个功能点或脚本行为是否符合预期,所以,方法和手段是多种的。如,python自带的assert语句,unittest框架的assert方法,甚至用try…except捕获异常来断言等。在本文,主要介绍selenium提供的断言模式,但并不是说,web ui自动化脚本开发中只能使用selenium提供的断言模式,实际上也可以使用assert语句进行。

以下主要介绍Selenium断言中的两个模式:assert 、verify。

assert :断言失败时,测试终止。

Verify 断言失败时,测试会继续执行,但会将错误信息写入日志。

如何选择使用assert还是Verify呢?

其实,选择使用assert还是Verify,取决于当执行失败时,希望脚本如何处理。如果希望测试失败时用例停止执行,方便检查错误原因,使用assert;如果希望测试出现异常时仍然可以对后续内容进行检验,使用verify。

即,assert和Verify的区别是:Verify失败后不影响脚本的继续执行,而assert失败后将终止脚本执行。

一个有用的思路是:

我们使用一个"assert"保证操作在正确的页面上,然后跟着一堆的"verify"来验证页面元素、表单中的值,标签等。

如下所示,我们打开一个页面,然后assert断言打开的是否标题为“Selenium IDE”的页面,如果断言成功,则验证页面图片和文字是否正确;否则,直接停止测试即可。

Command

Target

Value

open

/projects/ide/

assertTitle

Selenium IDE

verifyElementPresent

css=#mainContent img

verifyText

//table/tr/td/div/p

This is my text and it occurs right after the div inside the table.

常用断言总结

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:(验证表的预期内容)

0 人点赞