按输入类型查找字段
Find a field by input type
有没有一种方法可以找到所有输入的字段,type=email?
这是一个 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 等等,但它会根据特定条件而变化。我希望编写一个方法来识别任何类型为电子邮件的字段并输入所需的电子邮件地址。
有没有办法用水豚做到这一点?
我试过:
all('input[type='email']")
经过一番尝试,我想出了以下可行的方法:
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')
之所以有效,是因为每个电子邮件表单的标签文本中都有单词 'email'。
为了保持可读性,您需要 :field
选择器
的 type
选项
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')
如果您不想匹配字段类型,而是要检查部分文本的标签 'email',您也可以这样做
all(:field, 'email', exact: false) # The same count/minimum/etc options from above can be used here too
有没有一种方法可以找到所有输入的字段,type=email?
这是一个 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 等等,但它会根据特定条件而变化。我希望编写一个方法来识别任何类型为电子邮件的字段并输入所需的电子邮件地址。
有没有办法用水豚做到这一点?
我试过:
all('input[type='email']")
经过一番尝试,我想出了以下可行的方法:
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')
之所以有效,是因为每个电子邮件表单的标签文本中都有单词 'email'。
为了保持可读性,您需要 :field
选择器
type
选项
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')
如果您不想匹配字段类型,而是要检查部分文本的标签 'email',您也可以这样做
all(:field, 'email', exact: false) # The same count/minimum/etc options from above can be used here too