按输入类型查找字段

时间:2017-04-19 09:25:08

标签: css capybara

有没有办法找到输入的所有字段,输入=电子邮件?

这是一个HTML代码段:

<input id="keeper-email_email" name="keeper-email.email" value="" 
       aria-describedby="keeper-email_email-hint" no_optional_label="true" 
       type="email" autocomplete="off" maxlength="254">

我可以看到它有一个ID等等但是根据某些标准而改变。我希望编写一种方法,可以识别任何类型为电子邮件的字段并输入所需的电子邮件地址。

有没有办法与Capybara这样做?

我试过了:

all('input[type='email']")

2 个答案:

答案 0 :(得分:1)

经过一番玩耍后,我想出了以下有效的方法:

emails = all(:xpath, "//label[contains(text(), 'email')]")
email = emails[0].text
email_2 = emails[1].text
fill_in(email, with: 'bla')
fill_in(email_2, with: 'blo')

这是有效的,因为每个电子邮件表单在其标签文本中都有“电子邮件”一词。

答案 1 :(得分:1)

为了保持可读性,您需要type选择器的:field选项

fields = all(:field, type: 'email')
fields[0].set('bla')
fields[1].set('blo')

如果你知道你可能想要一个至少一个字段

all(:field, type: 'email', minimum: 1)

这样它就可以使用至少一个字段的Capybaras等待行为(如果你知道将有2个用count: 2作为选项)

如果只有一个选项,那么另一个选择是

find_field(type: 'email')

如果您要检查部分文字“电子邮件”的标签,而不是匹配字段类型,您也可以

all(:field, 'email', exact: false) # The same count/minimum/etc options from above can be used here too