0

Mechanize を使用して、ASPX で href を Javascript としてリンクをたどろうとしています。

mechanize で node を使用してリンクをトレースしましたが、クリック イベントを送信できませんでした。

slink=page.link_with(:node => page.at('a[@id="lbtnRole_2"]'))
page=slick.click

次のエラーを取得:

page=slick.click -- in `<top (required)>'#<NameError: undefined local variable or method `slick' for main:Object>

javascript のようにフォーム送信をエミュレートしようとすると、エラーは発生しません。しかし、2番目のページにも移動できませんでした。

page = agent.get('http://somepage.aspx')
search_results = page.form_with(:name => 'MainForm') do |form|
  form.field_with(:name => "__EVENTTARGET").value=''
  form.field_with(:name => "__EVENTARGUMENT").value='role'
end.submit

以下の Web ページのリンクと Javascript

リンク:

 <a id="role" onclick="javascript:__doPostBack('projectrole','a000~AA~XYZ~Y~2~~others')" class="style_ProjectCentral_ProjectRole" href="javascript:__doPostBack('role','')" style="color:DarkBlue;font-family:Arial;">TM</a></td><td></td>

Javascript - 以下を行います:

function __doPostBack(eventTarget, eventArgument) {
  var theform;
  if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
    theform = document.MainForm;
  }
  else {
    theform = document.forms["MainForm"];
  }
  theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
  theform.__EVENTARGUMENT.value = eventArgument;
  theform.submit();
}

現在のページの機械化オブジェクト:

#<Mechanize::Page::Link "TM" "javascript:__doPostBack('role','')">} 

次のページに移動する方法を教えてもらえますか?

4

0 に答える 0