我正在尝试从以下位置重命名文件夹:
<li class="selected rename" id="labelset-624" folderid="624" foldertype="labelset" permissionlevel="2" labelsetid="624">
<div class="folder-insert-drop ui-droppable"></div>
<div class="clear"></div>
<div class="folder-item droppable hoverable empty ui-droppable">
<div id="mlink-labelset-624" class="folder-menu-link" data-hasfullperm="true" data-subfoldertype="undefined"></div>
<div class="expander"></div>
<div class="folder-name labelset label-set">New Label Set</div>
<div class="target-bar"></div>
<div class="folder-rename">
<input value="New Label Set" id="folder-rename-624" maxlength="100" type="text">
</div>
使用以下命令使用watir-webdriver:
@b.li(:class, "selected rename").div(:class, "folder-rename").text_field.wait_until_present
@b.li(:class, "selected rename").div(:class, "folder-rename").text_field.set labelsetName
@b.li(:class, "selected rename").div(:class, "folder-rename").text_field.send_keys :return
它给了我以下错误:
Watir::Exception::UnknownObjectException: unable to locate element, using {:class=>"selected rename", :tag_name=>"li"}
当我运行我的测试脚本(测试单元)时,我可以看到输入到文本字段中的labelsetName的值,但它会很快消失并恢复为默认值。这会导致send_keys
语句出错。
当我在irb中输入相同的命令时,它完美地运行。我尝试在步骤之间添加长达15秒的睡眠无济于事。这两个人的工作方式有什么不同吗?有什么建议可以解决这个问题吗?
答案 0 :(得分:0)
除非您有其他令人信服的理由,否则请尝试访问&lt; input&gt;直接使用id
属性标记:
b.text_field(:id => "folder-rename-624").set "foo"
b.text_field(:id => "folder-rename-624").send_keys :return
并且 - 如果有关联的提交按钮 - 请尝试使用该按钮而不是send_keys :return
。
编辑:很遗憾,我无法重现正在消失的文字问题。但是我正在添加这个片段,它应该处理递增的id属性:
tfs = b.text_fields
b.text_field(:id => "#{tfs.last.id}").set "foo"
b.text_field(:id => "#{tfs.last.id}").send_keys :return
答案 1 :(得分:0)
事实证明,因为我多次运行测试,每次创建一个新文件夹时,我试图重命名的文件夹被推离屏幕。这就是导致错误的原因。