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

时间:2014-08-13 09:41:38

标签: ruby cucumber watir-webdriver

我有一个用于webapp的用户名/密码/密码登录屏幕,我正在自动化,这是我遇到的问题,我无法找到最佳做法。

登录页面有用户名,密码和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">

任何关于如何处理此事的想法

感谢

1 个答案:

答案 0 :(得分:0)

我假设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">

鉴于您知道需要哪些密码数字,即XOOXXX,您可以通过其占位符属性直接访问和输入这些字段:

passcode = '123456'
browser.text_field(data_validate_msg: "enter pin ", placeholder: "2").set(passcode[1])
browser.text_field(data_validate_msg: "enter pin ", placeholder: "3").set(passcode[2])

请注意,在上面的代码中,占位符属性被假定为从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