需要发布到现有网页(无需登录)并发布提交参数,其中存在多个提交表单标签,并且包含具有相同NAME和VALUE标签的相同标签;例如,在同一页面上,此INPUT提交在不同的FORM标签下重复3次:
< INPUT TYPE='Submit' NAME='submit_button' VALUE='Submit Query' >
我的Ruby代码可以识别表单标签上的字段,但是在page.forms [x] .action post上有405 HTTPMethodNotAllowed用于https://pdb.nipr.com/html/PacNpnSearch - 未处理的响应。
Ruby代码:
class PostNIPR2
def post(url)
button_count = 0
agent = Mechanize.new
page = agent.get(url)
page.forms.each do |form|
form.buttons.each do |button|
if(button.value == 'Submit Query')
button_count = button_count + 1
if (button_count == 3)
btn_submit_license = button.name
puts button
puts btn_submit_license
puts button.value
end
end
end
end
begin
uform = page.forms[1]
uform.license = "0H20649"
uform.state = "CA"
uform.action = 'https://pdb.nipr.com/html/PacNpnSearch'
rescue Exception => e
error_page = e.page
end
page = agent.submit(uform)
end
url = "https://pdb.nipr.com/html/PacNpnSearch.html"
p = PostNIPR2.new
p.post(url)
end
答案 0 :(得分:0)
您的问题是如何选择该按钮?如果是这样的话:
form.button_with(:name => 'submit_button')
或提交如下表格:
next_page = form.submit form.button_with(:name => 'submit_button')
此外,由于某种原因,您正在更改表单的操作,这将解释405s
答案 1 :(得分:0)
您是对的,对评论代码感到抱歉 - 问题是让form.license
和form.state
更新输入参数然后form.submit
发布form.button_with(:name => 'Submit Query'
- 我这样做并收到405 HTTPMethodNotAllowed
,而https://pdb.nipr.com/html/PacNpnSearch - unhandled response
。但现在我已将代码更改为agent.page.form_with(:name => 'license_form')
,现在可以正确找到我需要发布的表单;然后我得到form.button_with(:value => 'Submit Query')
,然后使用agent.submit(form, button)
。现在我得到了正确的结果。