水豚黄瓜找地

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)