我目前仍在学习ruby并且在为我们的内部CMS系统编写自动化套件时学习进展缓慢,但在尝试删除图像条目时我遇到了问题。
最基本的是,当一个新图像被添加到库中时,它会根据项目设置一个ID,该项目在分配后保持静态。感谢Justin Ko,我可以修改项目,但现在我想通过ruby和watir-webdriver调用项目的删除按钮。
有问题的ID所在的块的HTML代码是:
<form action="" method="get" style="float:left; margin-bottom: 0; padding-right: 5px; padding-top: 5px">
<input type="hidden" name="module" value="image" id="module" />
<input type="hidden" name="action" value="amend" />
<input type="hidden" name="imageHeadingID" value="152" />
<input type="submit" name="submitButton" value="Amend" class="btn btn-primary btn-small" />
</form>
<form action="" method="get" style="float:left; margin-bottom: 0; padding-top: 5px">
<input type="hidden" name="module" value="image" id="module" />
<input type="hidden" name="action" value="amend" />
<input type="hidden" name="imageHeadingID" value="152" />
<input type="submit" name="submitButton" value="Delete" class="btn btn-danger btn-small" />
</form>
使用;
在图像条目创建阶段提取数值id作为引用@@grabelement = $browser.hidden(:name, "imageHeadingID")
@@id = @@grabelement.value
调用我使用的'修正'功能时;
form_element = $browser.hidden(:name => 'imageHeadingID', :value => "#{@@id}").parent
form_element.button(:value => 'Amend').click
试图调用我正在使用的'删除'功能时;
form_element = $browser.hidden(:name => 'imageHeadingID', :value => "#{@@id}").parent
form_element.button(:value => 'Delete').click
但修改代码有效,使用删除代码会触发;
的例外Watir::Exception::UnknownObjectException: unable to locate element, using {:value=>"Delete", :tag_name=>"button"}
鉴于两者基本上是相同的功能,我无法理解为什么我会收到此错误或如何解决它。任何帮助将不胜感激
答案 0 :(得分:2)
问题在于:
form_element = $browser.hidden(:name => 'imageHeadingID', :value => "#{@@id}").parent
这就是找到名为“imageHeadingID and value”152“的第一个隐藏输入。换句话说,代码期望Amend和Delete按钮的格式相同:
<form action="" method="get" style="float:left; margin-bottom: 0; padding-right: 5px; padding-top: 5px">
<input type="hidden" name="module" value="image" id="module" />
<input type="hidden" name="action" value="amend" />
<input type="hidden" name="imageHeadingID" value="152" />
<input type="submit" name="submitButton" value="Amend" class="btn btn-primary btn-small" />
<input type="submit" name="submitButton" value="Delete" class="btn btn-danger btn-small" />
</form>
您将需要查找隐藏字段的兄弟“删除”按钮。一种方法是遍历按钮以找到具有预期兄弟的按钮:
# Amend
button = $browser.buttons(:value => 'Amend').find { |button|
button.parent.hidden(:name => 'imageHeadingID', :value => "#{@@id}").exists?
}
button.click
# Delete
button = $browser.buttons(:value => 'Amend').find { |button|
button.parent.hidden(:name => 'imageHeadingID', :value => "#{@@id}").exists?
}
button.click
有些人可能更喜欢在这些类型的情况下使用CSS选择器(或XPath):
# Amend
button = $browser.button(:css => "input[name='imageHeadingID'][value='#{@@id}'] ~ input[value='Amend']")
button.click
# Delete
button = $browser.button(:css => "input[name='imageHeadingID'][value='#{@@id}'] ~ input[value='Delete']")
button.click