我想在我的测试中选择一个随机HTML选择选项,但是这些选项是动态生成的,并且在运行测试时它们的ID不一定清晰。
我正在使用页面对象和内容DSL(实际上只是将表单定义为form { $("form") }
,因为我遇到了其他问题),而且我知道我可以为form.dropdown
分配特定的ID或文本值控制,但我不确定这个下拉列表中获取所有下拉值ID列表(或者更好的是它们的名称映射)的最简单方法是什么。
我到目前为止只是尝试检查form.dropdown
的类型,但它被报告为ArrayList并包含空值,因此不太有用。
我已阅读Geb指南,但未能找到我认为相关部分的良好解决方案:
http://www.gebish.org/manual/current/all.html#setting_values
FWIW我正在使用Groovy / Grails和Firefox WebRunner。
答案 0 :(得分:1)
这就是我这样做的方式。有这种形式:
<form id="myform">
<select name="dropdown">
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>
</form>
首先得到选项,为简单起见:
def options = $('#myform select[name="dropdown"] option')
然后,以这种方式生成随机索引:
int numOptions = options.size()
int randomIndex = System.currentTimeMillis() % numOptions
最后,因为我还没有找到如何通过索引设置选项,我按值设置:
String randomValue = options[randomIndex].value()
$('#myform').dropdown = randomValue
或者,长话短说,
def options = $('#myform select[name="dropdown"] option')
$('#myform').dropdown = options[(System.currentTimeMillis() % options.size()) as int].value()
我们也可以从OPTION中引用SELECT,避免不必要的CSS选择:
def options = $('#myform select[name="dropdown"] option')
options.parent().value( options[(System.currentTimeMillis() % options.size()) as int].value() )
希望它有效。
答案 1 :(得分:0)
不确定是否有'gebish'方法可以执行此操作,但您可以使用选择器获取值和标签
$('form select[name="dropdown"] option').each {
println it.text() + ' :: ' + it.value()
}