<div id="temp_1333021214801">
<input type="text"/>
</div>
$browser.text_field(:xpath,".//*[@id='temp_1333018770709']/input").set("apple")
我收到错误“无法找到元素”,因为ID会动态更改。
请帮我在文本字段中设置文字。
答案 0 :(得分:0)
如果您有动态ID,我可以建议以下内容:
代码对象计数。例如
$browser.text_field(:index => 2)
在页面上给出第三个text_field。
代码,了解您正在尝试查找的内容。
$browser.div(:name => 'mydiv').text_field(:index=>2)
给出div中的第三个文本字段,名为&#39; mydiv&#39;。
无论其
如果您的前端以这种方式不可测试,我强烈建议您首先考虑您对自动化测试的承诺。对软件进行任何微小的改动都会让你工作到晚上9点,当你更新所有的脚本时,拔掉你的头发并来回摇摆,所以除非代码维护是你的周末爱好,否则考虑半自动化或探索性测试或手动脚本。谈谈开发(可能是谁。可能是你!)或者更高层(除非你也是),看看它是否可以变得更加可测试。也不要使用xpath,除非你对它有一些不正常的乐趣。
希望这很有帮助,如果没有源HTML,我就无法做任何具体事情。
答案 1 :(得分:0)
似乎你的动态id是temp_所以这应该根据上面的信息来做:
browser.div(:id, /temp_\d+/).text_field.set 'something'
我的解决方案的问题是它假设id将始终是temp_ regex连续匹配任何数字集,这似乎是上面的示例的情况。此外,它假设该页面的DOM中没有其他div(:id,/ temp_ \ d + /)组合,很可能不应该是一个问题。