在 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'
注意:watir自动等待元素存在,存在并启用.
你的程序几乎没有问题,首先,你不必要求 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
我的第一个 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 仪表板登录 的元素会打开一个新选项卡。所以需要将
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'
注意:watir自动等待元素存在,存在并启用.
你的程序几乎没有问题,首先,你不必要求 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