【问题标题】:Passcode type scanning and population with Watir-webdriver and Cucumber使用 Watir-webdriver 和 Cucumber 进行密码类型扫描和填充
【发布时间】:2014-08-13 09:41:37
【问题描述】:

我有一个我正在自动化的 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">

关于如何最好地处理这个问题的任何想法

谢谢

【问题讨论】:

  • 用户如何知道要输入哪些数字?是否有一些标签或文字告诉他们?
  • Hi Again Justin ;),用户有 6 个输入字段,只有一个数字,只有占位符文本,用户将有自己的 6 位代码,所以它会说 XOOXXX 作为配置,其中 OO 是数字 2 和 3 需要从您的密码中输入,目前所有密码均为 123456,使用 XOOXXX 我需要在第二个输入框中输入 2,在第三个输入框中输入 3,希望这是有道理的

标签: ruby cucumber watir-webdriver


【解决方案1】:

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

【讨论】:

  • 谢谢贾斯汀,我现在就试一试,你是对的,所需的数字会随着每次页面加载而改变。
  • 看来他们在最新版本中删除了占位符文本,所以我需要另一种方法通过另一个 ID 找到每个 pin 框,嗯,这些疯狂的编码人员和他们的疯狂部署 ;)
  • 只有 6 个密码字段是 data-validate-msg 为“输入密码”的唯一文本字段 - 即如果您这样做 pins.length 是答案 6?如果是这样,您可以根据其位置假设该数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 2021-04-05
  • 2012-07-17
相关资源
最近更新 更多