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','')">}
次のページに移動する方法を教えてもらえますか?