如何在我的集成测试中模拟密码自动填充?

How can I simulate password autofilling in my integration test?

在我的密码更改页面上,我有一个名为 password 的新密码字段,以及一个名为 current_password 的当前密码字段,这样密码管理器就会了解更改并提示您保存新密码。 (这也是默认设计行为)

但是,如果用户不想更改密码,我会让他们将新密码字段留空(再次设计默认行为),但密码管理器通常会使用当前密码自动填充此字段。

这不是问题,如果自动输入值,我只是用js清除字段。但是我想对此进行测试,并且无法弄清楚如何让水豚(webkit 驱动程序)以一种不会被 js 解释为手动的方式填写该字段。 (即不专注领域)

目前,如果在输入值之前该字段未获得焦点,我会擦除该值(一次)。这样就没有竞争条件,如果用户想要使用它(聚焦该字段),该字段就会变得易于使用。

Capybara 旨在模拟 用户 交互。由于用户会专注于该领域,因此 Capybara 也会。
解决此问题的一种方法可能是使用水豚内的 javascript 来填充该字段。也许尝试这样的事情:

page.execute_script( "$('input[name=password]').val('user-password')" )

execute_script 将 JS 注入 Capybara 正在测试的页面。请注意,使用此方法时,您必须自己处理等待。