水豚黄瓜找地
Capybara Cucumber Find Field
我正在将水豚与黄瓜一起使用。
我正在测试的网页包含许多电子邮件字段,但输入字段的 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 和标签在整个用户旅程中并不一致
因为您已经找到了需要对其调用 #set
的元素,而不是使用 fill_in
email_fields[0].set(text)
我正在将水豚与黄瓜一起使用。
我正在测试的网页包含许多电子邮件字段,但输入字段的 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 和标签在整个用户旅程中并不一致
因为您已经找到了需要对其调用 #set
的元素,而不是使用 fill_in
email_fields[0].set(text)