我想测试通过一个名为selected的jquery插件实现的多选。
选择的HTML:
<select id="pickUsers" name="users" multiple="true" class="many-to-many" >
<option value="1" >me</option>
<option value="3" >leader</option>
<option value="2" >test</option>
</select>
例外是:
org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with
我认为它有一个display: none
css属性的东西,已经读了很多但是没有找到解决方案来解决我的问题
编辑:
我的Selenium绑定是:
users {$("select", name:"users")}
我尝试了几项任务:
users = ["me", "test"] or
users = [1,2,3]
users = ["1","2","3"]
答案 0 :(得分:0)
陷入同样的问题。 Geb只能访问可见的元素。
在这种情况下,选择将 display none 添加到select(<select ... style="display:none">
)。因此,您无法使用$('')
选择器访问它。
一种解决方法是:
在你的测试中:
删除样式属性。
js.exec("document.getElementsByTagName('select')[0].removeAttribute('style')")
这是我能想到的唯一方法,因为Geb $('')
选择器只有getAttribute,但没有setAttribute。
设置新的选择值
$('select').value(1)
注意:这不是一个优雅的解决方案,因为您将获得2个选择。首先,你取消隐藏&#34;,第二个是由选择创建和设置的那个。不过,通过这种方式,您可以访问select,将值设置为您的测试。