0
4

2 回答 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"

这些是watirwatir-webdriverfire_event文档的链接以供参考。

于 2013-10-15T18:01:10.030 回答
1

该行:

browser.a(:text, "/media/remote/edit_source/#{@rep_id}").when_present.click

失败是因为:

  1. 您要查找的内容在 onclick 属性中(而不是文本)
  2. 定位器被传递给第二个参数的字符串。这意味着它正在寻找与之完全匹配的东西。鉴于您只使用部分文本/属性,您需要使用正则表达式。

如果您使用的是 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 回答