2012-06-19 12 views
5

का उपयोग कर किसी वेबपृष्ठ में लॉगिन करें मैं सामान्य में फैंटोमज, जावा स्क्रिप्ट और वेबस्क्रैपिंग के लिए नया हूं। मैं जो करना चाहता हूं वह मूल http प्रमाणीकरण है और फिर कुछ जानकारी प्राप्त करने के लिए एक और यूआरएल पर जाएं। यहां तक ​​कि मेरे पास अभी तक है। कृपया मुझे बताएं कि मैं क्या गलत कर रहा हूं।phantomjs और jquery

var page = require('webpage').create(); 
var system = require('system'); 

page.onConsoleMessage = function(msg) { 
    console.log(msg); 
}; 

page.onAlert = function(msg) { 
    console.log('alert!!>' + msg); 
}; 

page.settings.userName = "foo"; 
page.settings.password = "bar"; 

page.open("http://localhost/login", function(status) { 
    console.log(status); 
    var retval = page.evaluate(function() { 
     return "test"; 
    }); 
    console.log(retval); 

    page.open("http://localhost/ticket/" + system.args[1], function(status) { 
     if (status === "success") { 
      page.injectJs("jquery.min.js"); 
      var k = page.evaluate(function() { 
       var a = $("div.description > h3 + p"); 

       if (a.length == 2) { 
        console.log(a.slice(-1).text()) 
       } 
       else { 
        console.log(a.slice(-2).text()) 
       } 
      //return document.getElementById('addfiles'); 
      }); 

     } 
    }); 
    phantom.exit(); 
}); 

मैं इस फ़ाइल में एक तर्क पारित कर रहा हूं: एक टिकट नंबर जो दूसरे यूआरएल में जोड़ा जाता है।

+0

इस विषय मैं वर्तमान में Google समूह पर के माध्यम से जा रहा हूँ पर एक चर्चा है:

CasperJS एक अच्छा एपीआई उद्देश्य के रूप में अच्छी तरह से रूपों के लिए बनाया गया है। मैं इससे संबंधित एक गलती कर सकता हूं: https://groups.google.com/forum/?fromgroups=#!topic/phantomjs/20z8N8rwITw –

उत्तर

9

मैं इसके लिए CasperJS अत्यधिक अनुशंसा करता हूं। स्क्रिप्ट नेतृत्वहीन वेबकिट इंजन -

CasperJS एक खुला स्रोत नेविगेशन पटकथा & परीक्षण उपयोगिता जावास्क्रिप्ट में लिखा और PhantomJS पर आधारित है।

  • को परिभाषित करने & आदेश ब्राउज़िंग नेविगेशन चरणों
  • & प्रस्तुत करने रूपों
  • भरने: यह इस तरह के रूप में आम कार्य करने के लिए एक पूर्ण नेविगेशन परिदृश्य परिभाषित करने की प्रक्रिया & वाक्यात्मक चीनी को आसान बनाता है और उपयोगी उच्च स्तर के कार्यों प्रदान करता है, तरीकों
  • पर क्लिक & निम्न लिंक
  • एक पेज के स्क्रीनशॉट पर कब्जा करने (या इसे का हिस्सा)
  • दूरस्थ डोम
  • 0 परीक्षण
  • लॉगिंग घटनाओं
  • द्विआधारी लोगों
  • कार्यात्मक परीक्षण स्वीट लेखन सहित संसाधनों, डाउनलोड करने, JUnit XML के रूप में परिणाम
  • scraping वेब सामग्री

(CasperJS वेबसाइट से)

बचत

मैंने हाल ही में फ़ैंटॉमजेएस को लॉग-इन फॉर्म भरने जैसी चीजों को करने के लिए एक दिन बिताया है और ना अगले पृष्ठ पर विगेट करें।

http://docs.casperjs.org/en/latest/modules/casper.html#fill

var casper = require('casper').create(); 

casper.start('http://some.tld/contact.form', function() { 
    this.fill('form#contact-form', { 
     'subject': 'I am watching you', 
     'content': 'So be careful.', 
     'civility': 'Mr', 
     'name':  'Chuck Norris', 
     'email':  '[email protected]', 
     'cc':   true, 
     'attachment': '/Users/chuck/roundhousekick.doc' 
    }, true); 
}); 

casper.then(function() { 
    this.evaluateOrDie(function() { 
     return /message sent/.test(document.body.innerText); 
    }, 'sending message failed'); 
}); 

casper.run(function() { 
    this.echo('message sent').exit(); 
}); 
+1

इसका उल्लेख यह है कि कैस्परज को नोड पर चलाना मुश्किल है, आपको 'casperjs का उपयोग करना होगा इसके बजाए – Akshat

+0

http://stackoverflow.com/questions/13376189/login-with-casperjs –

संबंधित मुद्दे