4.6、获得验证信息
1) 在编写功能测试用例时,会假定一个预期结果,在执行用例的过程中把得到的实际结果与预期结果进行比较,从而判断用户的通过或失败。
2) 自动化测试用例是由机器去执行的,通常机器并不像人一样有思维和判断能力,那么是不是模拟的各种操作页面的动作没有报错就说明用例执行成功呢?并不见得。
3) 例如我们模拟百度搜索的用例,当新的迭代版本上线后,每一页的搜索结果少一条,但用例的执行并不会报错,因此这个 bug 永远不会被自动化测试发现。
4) 那么是不是在跑自动化用例时需要由测试人员盯着用例的执行来辨别执行结果呢?如果是这样的话,自动化测试就失去了“自动化”的意义。
5) 在自动化用例执行完成之后,我们可以从页面上获取一些信息来“证明”用例执行是成功还是失败。
【好了,废话不多说,下面来详细介绍一下,这种情况怎么处理。。。。。。】
通常用得最多的几种验证信息分别是 title 、URL 和 text
text 方法在前面已经讲过,它用于获取标签对之间的文本信息。
【下面就以126邮箱为例子,详细描述一下怎么获取验证信息】:
1、getTitle () :用于获得当前页面的 title。
2、getCurrentUrl () :用户获得当前页面的 URL。
通过打印结果,我们发现登录前后的 title 和 URL 明显不同。我们可把登录之后的这些信息存放起来,作为登录是否成功的验证信息。当然,这里 URL 每次登录都会有所变化,是不能拿来做验证信息的。title 可以拿来做验证信息,但它并不能很明确地表示是由哪个用户登录成功了,因此通过 getText () 获取用户文本(username@126.com)是很好的验证信息。
4.7、设置元素等待
现如今大多数 Web 应用程序使用 AJAX 技术。当浏览器在加载页面时,页面上的元素可能并不是同时被加载完成的,这给元素的定位增加了困难。如果因为在加载某个元素时延迟而造成元素定位失败的情况,那么就会降低自动化脚本的稳定性。我们可以通过设置元素等待提高这种问题而造成的不稳定。
4.7.1、自定义元素超时
不使用 WebDriver 所提供的超时方法,如果让我们自定义超时方法的话,如何定义。看下面的例子。
通过上面的例子,首先通过 for 循环来循环 10 次判断一个元素是否存在,如果超过 10 次则输出“timeout”。定义 isElementPresent() 方法来判断元素是否存在,如果元素存在则返回 True,if true 的话 break 跳出循环,元素不存在返回 false。
4.7.2、显式等待方法
WebDriver 提供了显式等待方法,专门针对某个元素进行等待判断。
WebDriverWait 类是由 WebDirver 提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。WebDriverWait(driver, 10, 1) 这段代码的意思如下:
● driver :浏览器驱动。
● 10 :最长超时时间,默认以秒为单位。
● 1 :检测的的间隔(步长)时间,默认为 0.5S。