许多网页应用中大量使用AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)技术。AJAX在浏览器与Web服务器之间使用异步数据传输HTTP请求,这样就可以使网页从服务器请求少量的信息,而不是整个页面。
使用Selenium IDE测试AJAX页面时会面临的一个问题也正是由于AJAX的异步优势所造成的。由于请求和从服务器返回的数据是异步进行的,所以如果没有合适的等待机制,Selenium IDE很容易因为没有得到需要的数据结果而无法正常执行步骤。下面以jQuery UI中的autocomplete这个demo为例来讲解如何使用Selenium IDE与采用了AJAX技术的页面进行交互,并确保测试用例的正常执行。待测试页面地址为
http://jqueryui.com/autocomplete/
这个demo的功能展示了在Tags输入框中输入英文首字母,则会自动弹出备选编程语言列表,然后用户可以通过鼠标或者键盘选择列表中的字段后就自动填充到Tags输入框中,如图2.11所示。
图2.11 Autocomplete待测试页面
使用Selenium IDE完成该测试用例的步骤如下:
1)启动Selenium IDE并确保录制键被按下。(www.daowen.com)
2)打开待测试页面。
3)录制的测试用例步骤如图2.12所示。其中waitForText就是为了解决AJAX的异步问题而采用的。
注意,在最新版本的Selenium IDE中,有些老旧的Command不再支持。如waitForTextPresent,最新的命令为waitForText,正如上述测试用例的步骤中所使用的一样。通过查看该命令的Reference就可以看到相关信息,不再支持的命令会标注出来,如图2.13中所示的This command is deprecated.Use the waitForText command with an element locator instead。
图2.12 与AJAX页面进行交互的脚本
图2.13 waitForTextPresent的Reference信息
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。