Grails 选择Geb中的随机下拉值
我想在测试中选择一个随机的HTML选择选项,但是这些选项是动态生成的,在运行测试时它们的ID不一定是清晰的 我正在使用页面对象和内容DSL(实际上只是将表单定义为Grails 选择Geb中的随机下拉值,grails,automated-tests,geb,Grails,Automated Tests,Geb,我想在测试中选择一个随机的HTML选择选项,但是这些选项是动态生成的,在运行测试时它们的ID不一定是清晰的 我正在使用页面对象和内容DSL(实际上只是将表单定义为form{$(“form”)},因为我有其他问题),我知道我可以为form.dropdown控件指定特定的ID或文本值,但我不确定获取所有下拉值ID列表的最简单方法是什么(或者更好的是它们到名称的映射)用于此下拉列表 到目前为止,我只是尝试检查form.dropdown的类型,但是它被报告为ArrayList,并且包含空值,所以这不是很
form{$(“form”)}
,因为我有其他问题),我知道我可以为form.dropdown
控件指定特定的ID或文本值,但我不确定获取所有下拉值ID列表的最简单方法是什么(或者更好的是它们到名称的映射)用于此下拉列表
到目前为止,我只是尝试检查form.dropdown
的类型,但是它被报告为ArrayList,并且包含空值,所以这不是很有用
我已经阅读了Geb指南,但没有在我认为相关的部分找到一个好的解决方案:
FWIW我在Firefox WebRunner中使用Groovy/Grails。不确定是否有“gebish”方法来实现这一点,但您可以使用选择器获取值和标签
$('form select[name="dropdown"] option').each {
println it.text() + ' :: ' + it.value()
}
我就是这样做的。有这个表格:
<form id="myform">
<select name="dropdown">
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>
</form>
然后,通过以下方式生成随机索引:
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()
我们还可以从选项中引用SELECT,以避免不必要的CSS选择:
def options = $('#myform select[name="dropdown"] option')
options.parent().value( options[(System.currentTimeMillis() % options.size()) as int].value() )
希望它能起作用。您是否尝试过类似jQuery的选择器来选择下拉列表?还没有,我想可能有一个本机API来实现这一点。您可以使用jQuery进行选择。Geb使用类似的API
def options = $('#myform select[name="dropdown"] option')
options.parent().value( options[(System.currentTimeMillis() % options.size()) as int].value() )