geb / selenium测试,选择多重选择

时间:2015-06-19 16:50:24

标签: jquery select selenium

我想测试通过一个名为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"]

1 个答案:

答案 0 :(得分:0)

陷入同样的​​问题。 Geb只能访问可见的元素。 在这种情况下,选择将 display none 添加到select(<select ... style="display:none">)。因此,您无法使用$('')选择器访问它。

一种解决方法是:

在你的测试中:

  1. 删除样式属性。 js.exec("document.getElementsByTagName('select')[0].removeAttribute('style')")

    这是我能想到的唯一方法,因为Geb $('')选择器只有getAttribute,但没有setAttribute。

  2. 设置新的选择值 $('select').value(1)

  3. 注意:这不是一个优雅的解决方案,因为您将获得2个选择。首先,你取消隐藏&#34;,第二个是由选择创建和设置的那个。不过,通过这种方式,您可以访问select,将值设置为您的测试。