如何使用ui selectmenu(jQuery)和selenium进行测试

时间:2011-06-02 20:00:57

标签: jquery-ui selenium

我正在尝试使用Firefox的selenium IDE插件(版本3.6)“记录”功能测试。我使用jQuery插件ui selectmenu(我认为它的版本1.8)。我试图“记录”下拉/选择组件中元素的选择。此下拉列表是一个ui选择增强组件。因此,隐藏了实际的select元素,最终选择了span元素和其他元素。这是selenium记录的内容:

<tr>
   <td>click</td>
   <td>//a[@id='type-button']/span[2]</td>
   <td></td>
</tr>
<tr>
    <td>click</td>
    <td>ui-selectmenu-item-416</td>
    <td></td>
</tr>

问题是第二部分使用数字后缀,一种计数器(416)。每个页面加载的值都不同,因此我看不出如何自动化它!?

如何获得可预测的结果并对其进行测试?还是有其他方法可以做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:2)

jQuery selectmenu小部件很难通过Selenium实现自动化。简单的录音回放几乎不会奏效。请尝试以下步骤自动选择 -

  1. 输入您需要选择的项目。

  2. 点击退格键,以便selectBox可以“搜索”该项目。

  3. 模拟搜索项目的向下箭头键。

  4. 从下拉列表中选择第一项。

  5. 以下是这些步骤的源代码(以Java格式)。您应该能够将这些适应IDE。

    selenium.type("selectMenu_descriptor", "item_to_be_selected");
    selenium.typeKeys("selectMenu_descriptor", "\b"); 
    selenium.keyDown("selectMenu_descriptor", "\\40");
    selenium.click("css=a.ui-corner-all[tabindex=\"-1\"]");
    

答案 1 :(得分:0)

如果你不关心运行jQuery UI控件的截图,我也发现这是有效的。

var jse = (IJavaScriptExecutor)theDriver;
jse.ExecuteScript("try { $(yourSelector).selectmenu('destroy'); } catch (ex) { }");

它有点乱,但是如果你在需要处理按文本选择下拉选项之前调用它,它就可以解决问题。