有没有办法找到输入的所有字段,输入=电子邮件?
这是一个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']")
答案 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