2017-01-02 3 views
0

を用いて第2ページへのアクセスを得ることができない。 は未定義はオブジェクトではない(R「[20] .click」を評価します) 未定義:7 :8私はエラー はTypeError示すphantomjsオートメーション 使用して、2ページ目へのアクセスを得ることができないphantomjsオートメーション

phantomjsコード

console.log("got here"); 
    var page = require('webpage').create(); 
    page.onConsoleMessage = function(msg) { 
    console.log(msg); 
    }; 

    page.open(url, function(status) { 
    if (status === "success") { 
     page.evaluate(function() { 
      document.getElementById("txtLoginName").value = "safvan"; 
      document.getElementById("txtPassword").value = "safvan542"; 
      document.forms["logInForm"].submit(); 
      console.log("Login submitted!"); 
      var r=document.getElementsByTagName("a"); 
      r[20].click(); 
      }); 
     window.setTimeout(function() { 
      page.render('hrtesttime.pdf'); 
      phantom.exit(); 
     }, 15000); 
    } 
    }); 
+0

を実行している間、私はあなたの気持ちを持っていますフォームを送信した直後にはリンクを利用できません。タイムアウトが必要なのかもしれません。レイアウトが変わる可能性があるため、20番目の要素にアクセスすることは非常に脆弱です。 – AdamSkywalker

+0

解決策を提案できますか? –

+0

10秒待ってから、リンクを見つけてクリックしてください。 – AdamSkywalker

答えて

0

Try this code:

console.log("got here"); 
var page = require('webpage').create(); 
page.onConsoleMessage = function(msg) { 
console.log(msg); 
}; 

page.open(url, function(status) { 
if (status === "success") { 
    page.evaluate(function() { 
     document.getElementById("txtLoginName").value = "safvan"; 
     document.getElementById("txtPassword").value = "safvan542"; 
     document.forms["logInForm"].submit(); 
     console.log("Login submitted!"); 
//After the form is submitted, wait 3s and click on the link: 
     setTimeout(function(){document.getElementsByTagName("a")[20].click();},3000); 
     }); 
    setTimeout(function(){ 
     page.render('hrtesttime.pdf'); 
     phantom.exit(); 
    }, 15000); 
} 
}); 

+2

私はこれを試しましたが、動作していません..! –

+2

私は答えを更新しました。 –

関連する問題