水豚无法找到输入字段

Capybara Unable To Find Input Field

我正在使用 Ruby gem Capybara 进行自动化(已阅读 this website 上的说明)。我有一个简单的脚本来显示我遇到的问题:

require 'capybara'
session = Capybara::Session.new(:selenium)
session.visit 'https://service.ringcentral.com/'
session.fill_in 'LoginName', with: '555-555-5555'

我在 SO 和其他网站上尝试了许多不同的建议,但没有成功。我认为这只是与 RingCentral 网站本身有关,因为我对其他网站(例如 google.com)没有那么多问题。

我找到了解决方案 here!水豚默认忽略隐藏元素。我想 post 我的答案,因为很难找到另一个解决方案,因为我不知道我要填写的字段是隐藏元素,所以我不考虑这个 post一个副本。如果您很难让 Capybara 查找和填写字段,请尝试将 ignore_hidden_elements 选项设置为 false,即使您的字段完全可见。

require 'capybara'
session = Capybara::Session.new(:selenium)
Capybara.ignore_hidden_elements = false
session.visit 'https://service.ringcentral.com/'
session.fill_in 'login-form-username-field-LoginName', with: '555-555-5555'

由于登录字段是不可见的(不透明度:0 以允许空文本从下方显示)默认情况下水豚不会找到它。您可以将 visible: false 传递给 fill_in 以查找不可见元素,在这种情况下,这将触发对元素的关注,这将触发它更改为 opacity: 1 并继续填充数据。

require 'capybara'
session = Capybara::Session.new(:selenium)
session.visit 'https://service.ringcentral.com/'
session.fill_in 'login-form-username-field-LoginName', visible: false, with: '555-555-5555'