在 Rails 上使用 Ruby - Watir 不会输入用户名、密码或单击登录按钮

Using Ruby on Rails - Watir won't input username, password, or click the log in button

我的第一个 Ruby Rails 项目 - 使用 Watir 的网络爬虫。

首先,我正在尝试登录一个网站,但 Watir 没有输入用户名和密码。

当它到达登录页面时,没有输入任何内容。我试过删除用户名和密码输入,只是为了看看它是否点击了按钮,但它仍然不会点击按钮。

如何让文本进入 username/password 字段,然后点击按钮?

我对这类事情完全陌生,如果我没有以易于回答的方式提出问题,我深表歉意,

这是我目前的情况:

require 'watir'
require 'selenium-webdriver'


browser = Watir::Browser.new :safari #opens Safari
browser.window.maximize
browser.goto 'go.crmls.org'
browser.link(title: 'MLS Dashboard Login').click
browser.text_field(data_ph: 'User ID').set 'username'
browser.text_field(data_ph: 'Password').set 'password'
browser.button(id: 'loginbtn').click

这是我的 gem 文件中的内容:

gem 'watir', '~> 6.16', '>= 6.16.5'
gem 'selenium-webdriver', '~> 3.6'

一切都是通过终端安装的,也使用了捆绑安装。

单击带有 MLS 仪表板登录 的元素会打开一个新选项卡。所以需要将的焦点转移到新打开的TAB,找到如下元素:

browser.windows.last.use
browser.element(xpath: "//div[@data-ph='User ID"]').set 'username'
browser.element(xpath: "//div[@data-ph='Password']").set 'password'

有点规范你可以使用:

browser.windows.last.use
browser.element(xpath: "//div[@class='form-control person' and @data-ph='User ID']').set 'username'
browser.element(xpath: "//div[@class='form-control lock' and @data-ph='Password']').set 'password'

注意自动等待元素存在存在启用.

你的程序几乎没有问题,首先,你不必要求 selenium-webdriver 因为 watir 是 selenium-webdriver 的包装器,所以当你需要 watir 时,你会自动要求 selenium-webdriver 作为 well.Second 关闭,您设置的 text_field 值不是 text_field 而是 div 并且当您单击 link MLS Dashboard Login 它会打开一个新的 window,因此您必须在输入值之前切换到新的 window。所以写下面的代码,就可以了。

browser.goto 'https://go.crmls.org/'
browser.link(text: 'MLS Dashboard Login').click
browser.windows.last.use
browser.div(data_ph: 'User ID').set 'username',:tab
browser.div(data_ph: 'Password').send_keys 'password'
browser.button(id: 'loginbtn').click