Selenium:测试自定义表单元素

时间:2012-02-01 09:02:05

标签: c# jquery jquery-plugins tdd webdriver

选择框,复选框和单选按钮很难用CSS设置样式,因此通常应用插件,用更容易应用CSS的常规元素替换本机表单元素。

jQuery UI Selectmenu就是一个例子:http://filamentgroup.com/lab/jquery_ui_selectmenu_an_aria_accessible_plugin_for_styling_a_html_select/

这些插件通常会产生如下标记:

<select name="mySelect" style="display: none; ">
<option value="1">1</option><option value="2">2</option><!-- ... -->
</select>
<a class="pretty-select-box">...</a>
<ul class="pretty-select-box-dropdown-list">
    <li>Item 1</li><li>Item 2</a></li><!-- ... -->
</ul>

问题是,当安装此类插件时,使用本机表单元素的Selenium测试将失败并出现此异常:

OpenQA.Selenium.ElementNotVisibleException : Element is not currently visible and so may not be interacted with

解决此问题的最佳方法是什么?我认为这一定是一个常见问题,但我无法找到有关它的更多信息。

2 个答案:

答案 0 :(得分:0)

我不知道如何禁用您在网页中使用的插件。但是,我可以告诉您,WebDriver的主要目标之一是在用户看到它时与页面进行交互。因此,您无法直接与不可见的元素进行交互。如果你绝对与隐藏元素进行交互,你总是可以选择使用JavaScript来操作元素。但请记住,这样做会失去使用WebDriver的主要优势之一(特别是使用所谓的“本机事件”),即您不必担心手动触发元素上的事件。司机会为你做这件事。

答案 1 :(得分:0)

如果没有启用花哨的插件,您可能希望网站正常工作(功能上,即使它不漂亮)。那么可能禁用插件并使测试更容易?