使用Selenium2Library 1.4.0,在官方的介绍里locating strategy里是支持jQuery的,但是在实际使用的时候,如果待测网页本身没有引用jQuery或者$已经被define过了就无法使用jQuery作为locating strategy,这个对于重度依赖jQuery的测试是件麻烦的事情。
在没有找到更好的办法之前,先用土办法对付一下,首先想到的就是利用 Execute Javascript 命令。
var jQ = window.document.createElement('script');
jQ.src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js';
window.document.body.appendChild(jQ);
在google的首页测试一下~ google首页的$并非属于jQuery,所以$('input[name=btnI]')[0] 这样的代码是不起作用的。
那么添加了对jQuery的引用之后感觉应该没问题了,于是在test case中加入以下测试代码:
Click Element dom=$('input[name=btnI]')[0]
期待结果是doodle页面被打开,也就是‘手气不错’那个按钮。可惜的是,依然fail了,错误提示 "$ is not defined"
这不科学。。。正在一筹莫展的时候,突然想起来这个外部文件加载是需要时间地。。。。
于是加上了一个Sleep再试试。。。
Sleep 5
啊哈! doodle页面就呈现在眼前啦!
完整测试代码如下:
*** Settings ***
Library OperatingSystem
Library Selenium2Library
Library String
*** Test Cases ***
OPEN-Doodle-PAGE
Open Browser http://www.google.com Chrome
Execute Javascript a = window.document.createElement('script');a.src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js';window.document.body.appendChild(a);
Sleep 2
Click Element dom=$('input[name=btnI]')[0]