单击与Mechanize的xpath链接

Alj*_*jaz 3 ruby xpath mechanize nokogiri mechanize-ruby

我想点击我用xpath(nokogiri)选择的Mechanize的链接.

怎么可能?

    next_page = page.search "//div[@class='grid-dataset-pager']/span[@class='currentPage']/following-sibling::a[starts-with(@class, 'page')][1]"
    next_page.click
Run Code Online (Sandbox Code Playgroud)

问题是nokogiri元素没有点击功能.

我无法读取href(URL)并发送get请求,因为链接已定义onclick函数(无href属性).

如果那是不可能的,有哪些替代方案?

Phr*_*ogz 10

  1. 当您尝试仅查找一个元素时使用page.at而不是page.search.

  2. 您可以使用CSS选择器语法使选择器更简单(更短):

    next_page = page.at('div.grid-dataset-pager > span.currentPage + a[class^="page"]')
    
    Run Code Online (Sandbox Code Playgroud)
  3. Link如果你有Nokogiri元素,page和mechanize对象来提供构造函数,你可以构建自己的实例:

    next_link = Mechanize::Page::Link.new( next_page, mech, page )
    next_link.click
    
    Run Code Online (Sandbox Code Playgroud)
  4. 但是,您可能不需要它,因为Mechanize#click您可以提供一个字符串,其中包含要单击的锚点/按钮的文本.

    # Assuming this link text is unique on the page, which I suspect it is
    mech.click next_page.text
    
    Run Code Online (Sandbox Code Playgroud)
  5. 完全重新阅读问题后进行编辑:但是,这一切都不会对您有所帮助,因为Mechanize不是Web浏览器!它没有JavaScript引擎,因此不会(不能)onclick为您执行.为此,您需要使用Ruby来控制真实的Web浏览器,例如使用WatirSeleniumCelerity等.