每次加载页面时,下拉列表中的产品都具有不同的ID

时间:2013-08-26 16:14:24

标签: javascript html selenium

我正在使用Selenium IDE为Web应用程序执行一些重复的表单填写任务。部分过程涉及选择一组产品,然后从该组中选择一些基础产品。例如:我想在DIY和硬件部分下看到所有的绘画和壁纸产品。在Selenium中,它可以正确识别和选择DIY和硬件部分。这会生成一组新的下拉列表,然后我可以选择“绘画”和“壁纸”。 Selenium在这里给出错误:

[error] Element id=selectgroup_RT_PAINT_ca9368dd-ddc0-4ade-a17f-f0e5a56e5e23_1 not found

问题在于RT_PAINT之后的字母和数字序列。每次生成下拉列表时,这似乎是唯一值,即使它们始终包含相同的值。有办法解决这个问题吗?

这是Selenium任务的HTML:

<tr>
    <td>select</td>
    <td>id=selectgroup_RT_PAINT_ca9368dd-ddc0-4ade-a17f-f0e5a56e5e23_1</td>
    <td>label=Dulux</td>
</tr>

我是Selenium的新手,所以我甚至不知道该尝试什么,因此没有代码示例。有没有办法改为id like...而不是id=

先谢谢大家

3 个答案:

答案 0 :(得分:1)

尝试寻找部分ID。

id^='selectgroup_RT_PAINT_'

有关更多示例,请参阅此链接:http://sauceio.com/index.php/2010/01/selenium-totw-css-selectors-in-selenium-demystified/

答案 1 :(得分:0)

如果您使用的是selenium IDE,只需记录并播放您想要的任何内容,然后执行以下操作:

  1. 选择引发错误的命令行
  2. 单击目标下拉列表并选择任何其他定位器,如相对xpath或其他不包含该随机序列的定位器。
  3. 重新运行测试用例。

答案 2 :(得分:0)

@Vlad你几乎是对的,但是你不能像那样明显地引用Id。引用ID时,它必须完全匹配。但是,您可以使用CSS来使用前缀规则。

我能够使用以下方法绕过它:

css=select[id^="selectgroup_RT_PAINT_"]

感谢输入