如何在水豚中使用find_in(如果可能)


90

我想执行以下操作,但由于fill_in的本质,它希望将定位符作为第一个参数。

find(:css, "input[id$='donation_pledge_hundreds']").fill_in :with => "10"

我也尝试过

element = find(:css, "input[id$='donation_pledge_hundreds']")   
fill_in element.<method> , :with => "10"

但是没有方法可以返回任何数据来标识fill_in的元素。

关于通过正则表达式查找字段以与fill_in一起使用的最佳方法的任何想法?

Answers:


160

从内存来看,可能不是100%正确,但是我认为,如果您引用的是元素本身,set而不是fill_in

find(:css, "input[id$='donation_pledge_hundreds']").set("10")

但是,对于您的特定示例,fill_in应该能够以您知道的ID来查找该元素:

fill_in 'donation_pledge_hundreds', with: "10"

好男人,就是那个。该特定字段用于不同的上下文(经过身份验证/未经身份验证),因此采用不同的字段ID。donation_pledge_hundreds是字段ID的公共部分,因此比较字段名$ =的末尾
ant

8
请谨慎使用“设置”而不是其他内置方法,因为它不会在更改值后触发事件。
Dan Caddigan 2014年

@DanCaddigan,这就是为什么它看起来像f3ck3d的原因:/那你怎么办?

find(:css, "...").set("10").send_keys(:return)之后可以使用来按回车键。触发相关事件。我没有测试过,但是find(:css, "...").set("10").trigger(:blur)如果那是您的事,您也可以。
gondalez

5

您可以使用方括号代替:name或来代替方法,:id例如 element = find(:css, "input[id$='donation_pledge_hundreds']") fill_in element[:name], :with => "10" ,相同的方法可以用于select- select my_type, from: find('select[name$="[type]"]')[:name]


3
find("input[id$='donation_pledge_hundreds']").set "10"

值得注意的是,您可以链接您的发现。

@modal = find(".modal")
@modal.find('input[name=foo]').set "bar"

2
element = find(:css, "input[id$='donation_pledge_hundreds']")   
element.fill_in with: "10"

不鼓励仅使用代码的答案。请添加一些有关如何解决问题或与现有答案有何不同的解释。点评来源
Nick,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.