Щелчок по ссылке Показать больше на странице группы LinkedIn с помощью Ruby Mechanize.

Я вошел в Linkedin и попал на страницу своей группы с помощью Ruby Mechanize. Я также могу получить список вопросов на странице. Однако я не могу щелкнуть ссылку «Показать больше» внизу, чтобы просмотреть всю страницу и, следовательно, все вопросы:

require 'rubygems'
require 'mechanize'
require 'open-uri'

a = Mechanize.new { |agent|
  # LinkedIn probably refreshes after login
  agent.follow_meta_refresh = true
}

a.get('http://linkedin.com/') do |home_page|
    my_page = home_page.form_with(:name => 'login') do |form|
    form.session_key  = '********'   #put you email ID
    form.session_password = '********'  #put your password here
  end.submit

mygroups_page = a.click(my_page.link_with(:text => /Groups/))

#puts mygroups_page.links

link_to_analyse = a.click(mygroups_page.link_with(:text => 'Semantic Web'))

link_to_test = link_to_analyse.link_with(:text => 'Show more...')

puts link_to_test.class

# link_to_analyse.search(".user-contributed .groups a").each do |item|

#   puts item['href']

#  end

end

Хотя на странице существует ссылка с текстом "Показать больше...", я почему-то не могу щелкнуть по ней. В ссылке link_to_test.class отображается NilClass. В чем возможная проблема?

The part of the page I need to reach is:
<div id="inline-pagination">
        <span class="running-count">20</span>
        <span class="total-count">1134</span>
            <a href="groups?mostPopularList=&amp;gid=49970&amp;split_page=2&amp;ajax=ajax" class="btn-quaternary show-more-comments" title="Show more...">
              <span>Show more...</span>
              <img src="http://static01.linkedin.com/scds/common/u/img/anim/anim_loading_16x16.gif" width="16" height="16" alt="">
            </a>
      </div>

Мне нужно щелкнуть, чтобы показать больше... Я могу использовать links_with(:href => ..), но, похоже, это не работает.


person Arc    schedule 23.07.2012    source источник


Ответы (2)


Теги внутри якоря создают пустое пространство вокруг текста якоря. Вы можете объяснить это с помощью:

link_to_analyse.link_with :text => /\A\s*Show more...\s*\Z/

Но, вероятно, достаточно просто сделать:

link_to_analyse.link_with :text => /Show more.../
person pguardiario    schedule 23.07.2012

НОВЫЙ ОТВЕТ:

Я только что проверил исходный код страницы группы, и кажется, что для ссылки «Показать больше» они фактически используют три символа точки, а не многоточие.

Пробовали ли вы ориентироваться на ссылку по ее атрибуту title?

link_to_analyse.link_with(:title => 'Show more...')

Если это все еще не работает, вы пытались сбросить текст всех ссылок на странице с помощью

link_to_analyse.links.each do |link|
  puts link.text
end

---- СТАРЫЙ ОТВЕТ НЕВЕРНЫЙ ----

LinkedIn использует символ Unicode «Горизонтальное многоточие» (код U + 2026) для своих ссылок, которые «выглядят» так, как будто они имеют «...» в конце. Таким образом, ваш код на самом деле не находит ссылку.

Необходимый символ: http://www.fileformat.info/info/unicode/char/2026/index.htm

Подлый :)

РЕДАКТИРОВАТЬ: и, конечно, чтобы получить ссылку, вам нужно вставить соответствующий символ Unicode в текст ссылки, например:

link_to_analyse.link_with(:text => 'Show more\u2026')
person Strelok    schedule 23.07.2012
comment
Как мне найти эту ссылку и щелкнуть по ней в этом случае с помощью Mechanize? - person Arc; 23.07.2012