web-dev-qa-db-ja.com

PhantomJSはページ上のリンクをクリックします

PhantomJSアプリケーションの一部を作成しました。数式作成者にユーザー名とパスワードを書き込んでいるWebサイトで解析しています。この後、リンクをクリックする必要があります。私はこのエラーを受け取りますが:

TypeError: 'undefined' is not a function (evaluating 'myLink.click()')

  phantomjs://webpage.evaluate():11
  phantomjs://webpage.evaluate():22
  phantomjs://webpage.evaluate():22

これは私のPhantomJSコードです:

if(document.getElementById("m_Content_submitbtn2").getAttribute('data-role') == "button"){
        var myLink = document.getElementById("m_Content_submitbtn2");   
    myLink.click();
}

そしてこれは私のリンクです:

<div class='button'><a href="#" data-role="button" tabindex='0' onclick='WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;m$Content$submitbtn2&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, true)); return false;' id="m_Content_submitbtn2">Log ind</a></div>&nbsp;
10
mikkeljuhl

デフォルトですべてのブラウザでサポートされていない_<a>_要素でclick()メソッドを使用しようとしています。代わりに、 this のようなものを使用してみてください。ここで、myLink.click();の代わりにeventFire(myLink, 'click');を実行する必要があります。

6
Martijn Hols

または、jQueryを含めて、次のようにします。

var page = require('webpage').create();
page.open('http://www.sample.com', function() {
  page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
    page.evaluate(function() {
      $("button").click();
    });
    phantom.exit()
  });
});
2
two7s_clash