我正在使用Capybara和Cucumber。
我正在测试的网页包含许多电子邮件字段,但输入字段的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">
阅读Capybara文档,我可以看到fill_in
响应ID,名称或标签,因此我的引用可能不起作用。无论如何我可以让这个街区工作吗?
就像我说的那样,Id和标签在整个用户旅程中并不一致
答案 0 :(得分:1)
由于您已经找到了需要在其上调用#set
而不是使用fill_in
email_fields[0].set(text)