Ввод регистрационной информации для сайта, который не использует формы, с помощью Mechanize / Ruby - PullRequest
0 голосов
/ 17 октября 2011

Мне нужно войти на сайт, чтобы запустить некоторые скрипты. Механизация с Nokogiri выглядит идеально для этой задачи, но мне трудно вводить информацию для входа в систему, так как поля ввода не находятся в формах (agent.page.forms.first возвращает nil):

    <div class="loginform" id="login_form">
      <div>
        <input type="text" id="loginname" tabindex="1"/>
      </div>
      <div>
        <input type="password" id="password" tabindex="2"/>
        <input type="text" id="password_text" style="display:none;"/>
      </div>
      <div class="signin"><a href="javascript:void(0);" class="sp" id="login_submit_btn"></a>
      </div>
    </div>

Можно ли как-то перейти к элементам ввода (они единственные на странице), а затем отправить мои имя пользователя и пароль для входа? Если Mechanize не способен сделать что-то подобное, есть ли альтернативы? Большое спасибо.

Ответы [ 2 ]

1 голос
/ 19 октября 2011

Я думаю, вам лучше проверить во всем источнике (включая JavaScript), как веб-сайт связывает вас.По моему мнению, это должен быть HTTP POST-запрос ... и использовать его для непосредственного входа в систему, не анализируя главную страницу с помощью запроса GET, а используя вместо этого Mechanize post method:

agent = Mechanize.new
url = 'http://website.com/hidden_login_page.php'
page = agent.post(url, {"login" => "foo", "password" => "bar"})

Hopeэто тоже помогает.

0 голосов
/ 17 октября 2011

У меня недавно была такая проблема. Попробуйте в механизме следующее:

page.field_with(:name => "loginname").value = "foo"
page.field_with(:name => "password").value = "bar"

Надеюсь, это поможет.

ура!

...