2016-09-20 51 views
0

我正在用黄瓜水豚。水豚黄瓜查找字段

我测试的网页包含许多电子邮件字段,但输入字段的ID和标签根据您所在的页面而改变。

我想要做的是创建一个通用的引用任何电子邮件字段,以便一个填写方法将适用于所有页面。

当检查输入字段,我可以看到他们是type='email

完整的HTML:

<input id="privatekeeper_email_email" name="privatekeeper_email.email" value="" data-validity-message="Must be a valid email address" no_optional_label="true" type="email" autocomplete="off" maxlength="254"> 

在我的块下面你应该能够把握什么,我特林做:

email_fields = all('input[type="email"]') 
fill_in(email_fields[0], with: text) 
fill_in(email_fields[1], with: text) 
end 

当我运行它,我得到以下错误:

Capybara::ElementNotFound: Unable to find field #<Capybara::Node::Element tag="input" path="/html/body/div[3]/div/div[2]/form/div/div[2]/div[6]/div/div[2]/div/div/div/div[2]/input"> 

阅读水豚文档,我可以看到fill_in响应ID,名称或标签,所以我的参考可能无法正常工作。无论如何,我可以让这个街区起作用吗?

就像我说的,该ID和标签不会在整个用户出行一致

回答

1

既然你已经找到你需要调用#set就可以了,而不是使用fill_in

email_fields[0].set(text) 
+0

感谢汤姆的元素。我看了一下Docs,一开始看不到这个解决方案。 – Tom