您好我正在尝试选择一个编辑按钮,我很难选择它。
<td>
<a onclick="new Ajax.Request('/media/remote/edit_source/3', {asynchronous:true, evalScripts:true}); return false;" href="#">
<img title="Edit" src="/media/images/edit.gif?1258500617" alt="Edit">
</a>
我在('/ media / remote / edit_source / 3')的末尾有一个数字,它改变了,我把它存储在@rep_id变量中。
我无法使用xpath,因为表经常更改。有什么建议?任何帮助是极大的赞赏。以下是我的尝试和失败。我对watir很新,喜欢它,但有时候我遇到这样的事情并且难以接受。
browser.a(:text, "/media/remote/edit_source/#{@rep_id}").when_present.click
答案 0 :(得分:1)
从您的示例中,看起来您正在使用onclick事件处理程序中的URL作为:text
定位器,除非该文本确实存在,否则我预计会失败。
您可以点击img
。例子:
browser.image(:title, "Edit").click
browser.image(:src, "/media/images/edit.gif?1258500617").click
browser.image(:src, /edit\.gif\?\d{10}/).click # regex the src
否则,您可能需要使用fire_event
方法来触发事件处理程序,如下所示:
browser.link(:id, "foo").fire_event "onclick"
这些是指向watir和watir-webdriver的fire_event
文档的链接以供参考。
答案 1 :(得分:1)
该行:
browser.a(:text, "/media/remote/edit_source/#{@rep_id}").when_present.click
失败是因为:
如果您使用的是watir-webdriver,则支持通过其:onclick属性定位元素。您可以使用正则表达式来部分匹配:onclick属性。
browser.link(:onclick => /#{Regexp.escape("/media/remote/edit_source/#{@rep_id}")}/).when_present.click
如果您还使用watir-classic(用于IE测试),则上述操作无效。相反,您可以检查链接的HTML。检查html也适用于watir-webdriver,但可能不如使用:onclick。
browser.link(:html => /#{Regexp.escape("/media/remote/edit_source/#{@rep_id}")}/).when_present.click