我正在使用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
或类似方法。有没有办法做到这一点(使用机械化或其他宝石)?
答案 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