Ruby 使用Watir webdriver和Cucumber进行密码类型扫描和填充

Ruby 使用Watir webdriver和Cucumber进行密码类型扫描和填充,ruby,cucumber,watir-webdriver,Ruby,Cucumber,Watir Webdriver,我有一个用户名/密码/密码登录屏幕,用于我正在自动运行的Web应用程序,这是我遇到的问题,我无法找出最好的做法 登录页面有用户名、密码和6位密码这是类似于银行验证屏幕的输入字段,如输入密码中的数字1 4 5,我希望能够探测密码,找出它需要的数字,然后相应地传递正确的数字 下面是启用字段的示例 <input class="input-block-level" type="text" data-validate-msg="enter pin " data-validate="true" dat

我有一个用户名/密码/密码登录屏幕,用于我正在自动运行的Web应用程序,这是我遇到的问题,我无法找出最好的做法

登录页面有用户名、密码和6位密码这是类似于银行验证屏幕的输入字段,如输入密码中的数字1 4 5,我希望能够探测密码,找出它需要的数字,然后相应地传递正确的数字

下面是启用字段的示例

<input class="input-block-level" type="text" data-validate-msg="enter pin " data-validate="true" data-bind="events: { keypress: passcode, keyup: passcode1 }, value: pin" maxlength="1" placeholder="1">

这是一个字段禁用的示例

<input class="input-block-level" type="text" data-validate-msg="enter pin " data-validate="true" data-bind="events: { keypress: passcode, keyup: passcode1 }, value: pin6" maxlength="1" placeholder="6" disabled="disabled">

关于如何最好地处理这个问题有什么想法吗


谢谢

我假设6个输入字段在需要第2位和第3位数字时如下所示:

<input class="input-block-level" type="text" data-validate-msg="enter pin " data-validate="true" data-bind="events: { keypress: passcode, keyup: passcode1 }, value: pin" maxlength="1" placeholder="1" disabled="disabled">
<input class="input-block-level" type="text" data-validate-msg="enter pin " data-validate="true" data-bind="events: { keypress: passcode, keyup: passcode1 }, value: pin2" maxlength="1" placeholder="2">
<input class="input-block-level" type="text" data-validate-msg="enter pin " data-validate="true" data-bind="events: { keypress: passcode, keyup: passcode1 }, value: pin3" maxlength="1" placeholder="3">
<input class="input-block-level" type="text" data-validate-msg="enter pin " data-validate="true" data-bind="events: { keypress: passcode, keyup: passcode1 }, value: pin4" maxlength="1" placeholder="4" disabled="disabled">
<input class="input-block-level" type="text" data-validate-msg="enter pin " data-validate="true" data-bind="events: { keypress: passcode, keyup: passcode1 }, value: pin5" maxlength="1" placeholder="5" disabled="disabled">
<input class="input-block-level" type="text" data-validate-msg="enter pin " data-validate="true" data-bind="events: { keypress: passcode, keyup: passcode1 }, value: pin6" maxlength="1" placeholder="6" disabled="disabled">
注意,在上面的代码中,占位符属性被假定为基于1的索引,其中从密码字符串获取值是基于0的

如果所需的密码数字可以更改,则可以遍历每个字段并仅输入启用的字段:

passcode = '123456'
pins = browser.text_fields(data_validate_msg: "enter pin ")
pins.each do |pin|
  next if pin.disabled?

  passcode_digit = passcode[pin.placeholder.to_i - 1]
  pin.set(passcode_digit)
end

用户如何知道要输入哪些数字?有什么标签或文字告诉他们吗?你好,贾斯汀;),用户有6个输入字段,只有一位数字和占位符文本,用户将有自己的6位代码,因此它将说XOOXXX作为配置,其中OO是数字2和3需要从您的密码中输入,目前所有密码都是123456,使用XOOXXX,我需要在第二个输入框中输入2,在第三个输入框中输入3,希望这能让senseThanks Justin满意,我现在就开始吧,你是对的,所需的数字基本上会随着每次页面加载而改变。看起来他们在最新版本中删除了占位符文本,所以我需要通过另一个ID找到每个pin框的另一种方法,嗯,这些疯狂的编码器及其疯狂的部署;)6个pincode字段是否是唯一的文本字段,其中数据验证消息为“输入pin”-即如果您执行
pin。长度
是答案6?如果是这样,您可以根据数字的位置来假定数字。
passcode = '123456'
pins = browser.text_fields(data_validate_msg: "enter pin ")
pins.each do |pin|
  next if pin.disabled?

  passcode_digit = passcode[pin.placeholder.to_i - 1]
  pin.set(passcode_digit)
end