我的WebTest响应中有一个带有一组复选框(全部在同一字段名下)的表单,我想根据它们的值取消选中其中一些复选框。我试过这个:
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
String js = "var carsfromjs = [\"Saab\", \"Volvo\", \"BMW\"]";
engine.eval(js);
String[] cars = (String[])engine.eval("Java.to(carsfromjs, \"java.lang.String[]\")");
for(int i=0; i<cars.length; i++){
System.out.println(cars[i]);
}
显然,这是非常黑客的代码,必须有更好的方法。此外,这实际上没有取消选中我想要的框:当我遍历表单中的复选框时,不再有值为my_form = response.forms['form-i-want']
for i in range(len(my_form.fields.get('field-i-want'))):
if my_form.fields.get('field-i-want')[i].value == "value-to-uncheck":
my_form.fields.get('field-i-want')[i].checked = False
的元素:该值已设置为{{1} }。当我提交表单时,表现就好像没有对表单进行任何操作。
答案 0 :(得分:0)
不幸的是,您设置输入checked
状态的方法确实会删除输入元素的不良副作用。
根据the docs,要将复选框输入标记为已选中,您需要编写:
my_form['field-i-want'] = True
其中'field-i-want'
是输入元素的name
属性的值。