为了解决这个问题,我们应该在 click button 关键字的后面加上 don't wait参数,这样就不会出现500错误了。
click button |
xpath=//button[1] | don't wait |
修改后我们继续运行一遍测试用例,没有500错误出现,但这次却出现了其他错误。
TestFail | FAIL |
Page should have contained text '本内容是使用 GET 方法请求的' but did not
这又是为什么呢?记住。Ajax的刷新是异步的,返回文字需要时间。而由于使用了don't wait参数,Robot Framework直接执行了下一个关键字 Page should contain,此时返回文字这时还没有出现,自然会失败。
这时候我们就用到了另外一个关键字 Wait Until Page Contains
我们将Page should contain 这一句换成下面这一句(第二个参数5000指的是等待5000毫秒,超过后就抛出超时错误)。
Wait Until Page Contains | 本内容是使用 GET 方法请求的 | 5000 |
拓展
上述的例子只是实现了最简单的对Ajax的测试方法。由于JavaScript代码能写得各式各样,因此测试用例的写法也会不尽相同。但是本质上AJAX就两个关键点:异步和动态DOM变更。只要抓住这2点,基本上什么都难不倒你了。下面的几个关键字应该能搞定绝大部分AJAX测试:
Wait For Condition · Wait Until Page Contains · Wait Until Page Contains Element
尤其是Wait For Condition,由于能够直接访问JavaScript代码,它异常强大,值得关注。