就像在这个答案中所说的那样,您可以简单地使用通过或检索到的新Mechanize::Form
对象:Nokogiri::XML::Element
Mechanize::Page#search
Mechanize::Page#at
a = Mechanize.new
page = a.get 'https://stackoverflow.com/'
# Get the search form via ID as a Nokogiri::XML::Element
form = page.at '#search'
# Convert it back to a Mechanize::Form object
form = Mechanize::Form.new form, a, page
# Use it!
form.q = 'Foobar'
result = form.submit
注意:您必须向构造函数提供Mechanize
对象和Mechanize::Page
对象才能提交表单。否则它将只是一个Mechanize::Form
没有上下文的对象。
似乎没有将Nokogiri::XML::Element
s 转换为 Mechanize 元素的中心效用函数,而是在需要的地方实现了转换。因此,编写一个通过 CSS 或 XPath 搜索文档并在适用时返回 Mechanize 元素的方法将需要在节点类型上使用相当大的 switch-case。跟我想象的不完全一样。