在ruby中打开填充的页面

时间:2019-02-22 14:57:29

标签: ruby nokogiri mechanize

我正在使用mechanize填写表单,但是我想在提交之前先在网页上对其进行审核。目标是使用预填写的表单打开浏览器。

require 'mechanize'

mechanize = Mechanize.new
page = mechanize.get('https://www.linuxtoday.com/contribute.html')

form = page.form_with :name => 'upload'
form.sub_name = "mbb"
form.email = "mbb@mbb.com"
form.author_name = "Mr Potatohead"
form.title = "Mr Potatohead writes Ruby"
form.link = "https://potato.potato"
form.body = "More text"

`open #{page.uri}`

呼出操作系统以打开网站,当然是空表格。我没有找到page.open或类似方法。有没有办法做到这一点(使用机械化或其他宝石)?

2 个答案:

答案 0 :(得分:2)

那是行不通的,因为设置表单字段甚至都不会更新DOM。

如果您要查看表单数据,可以检查form.request_data

答案 1 :(得分:1)

就像其他人在评论中提到的尝试硒一样,您将需要安装chrome或firefox驱动程序,下面是带有chrome的示例以帮助您入门:

require 'selenium-webdriver'
require 'pry' # optional

driver = Selenium::WebDriver.for :chrome

driver.navigate.to 'https://www.linuxtoday.com/contribute.html'
form = driver.find_element(id: 'upload')
form.find_element(id: 'sub_name').send_keys 'mbb'
form.find_element(id: 'email').send_keys 'mbb@mbb.com'

binding.pry # or sleep 60 
driver.quit

有关更多说明,see documentation