问问题
1487 次
2 回答
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-webdriverfire_event
文档的链接以供参考。
于 2013-10-15T18:01:10.030 回答
1
该行:
browser.a(:text, "/media/remote/edit_source/#{@rep_id}").when_present.click
失败是因为:
- 您要查找的内容在 onclick 属性中(而不是文本)
- 定位器被传递给第二个参数的字符串。这意味着它正在寻找与之完全匹配的东西。鉴于您只使用部分文本/属性,您需要使用正则表达式。
如果您使用的是 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
于 2013-10-15T18:51:19.357 回答