目前web层面的自动测试脚本主流框架采用 webdriver、selenium等开源框架。但其在页面元素的定位效率上实在是不敢恭维。jQuery选择器的引入能够大大提高这一效率。
jQuery常用选择器:
1、基础选择器
名称 | 说明 | 举例 |
根据元素Id选择 | $("divId") 选择ID为divId的元素 | |
根据元素的名称选择, | $("a") 选择所有<a>元素 | |
根据元素的CSS类选择 | $(".bgRed") 选择所用CSS类为bgRed的元素 | |
选择所有元素 | $("*")选择页面所有元素 | |
可以将几个选择器用","分隔开然后再拼成一个选择器字符串.会同时选中这几个选择器匹配的内容. | $("#divId, a, .bgRed") |
名称 | 说明 | 举例 |
使用"form input"的形式选中form中的所有input元素.即ancestor(祖先)为from, descendant(子孙)为input. | $(".bgRed div") 选择CSS类为bgRed的元素中的所有<div>元素. | |
选择parent的直接子节点child. child必须包含在parent中并且父类是parent元素. | $(".myList>li") 选择CSS类为myList元素中的直接子节点<li>对象. | |
prev和next是两个同级别的元素. 选中在prev元素后面的next元素. | $("#hibiscus+img")选在id为hibiscus元素后面的img对象. | |
选择prev后面的根据siblings过滤的元素 注:siblings是过滤器 |
$("#someDiv~[title]")选择id为someDiv的对象后面所有带有title属性的元素 |
名称 | 说明 | 举例 |
匹配包含给定文本的元素 | 查找所有包含 "John" 的 div 元素:$("div:contains('John')") | |
匹配所有不包含子元素或者文本的空元素 | 查找所有不包含子元素或者文本的空元素:$("td:empty") | |
匹配含有选择器所匹配的元素的元素 | 给所有包含 p 元素的 div 元素添加一个 text 类: $("div:has(p)").addClass("test"); | |
匹配含有子元素或者文本的元素 | 查找所有含有子元素或者文本的 td 元素:$("td:parent") |
module JqueryHelper
def jquery script
result = @driver.execute_script script
return nil if not script.start_with? 'return '
result
end
def pure_js_wait script
i = 0
10.times do
i = i+1
result = @driver.execute_script script
break if !!result
sleep 0.5
end
end
end
在元素定位方法中:
pure_js_wait "return $('#frame商品管理').contents().find('.searchbox > input').size() == 1;"
jquery "$('#frame商品管理').contents().find('.searchbox > input').focus();"
jquery "$('#frame商品管理').contents().find('.searchbox > input').val('#{value}');"
来源: http://lib.csdn.net/article/jquery/36419