2012-06-19 40 views
5

Tôi mới dùng các phantomj, Java script và WebScraping nói chung. Những gì tôi muốn làm là xác thực http cơ bản và sau đó truy cập một URL khác để nhận một số thông tin. Đây là những gì tôi có cho đến bây giờ. Xin vui lòng cho tôi biết những gì tôi đang làm sai.đăng nhập vào một trang web bằng cách sử dụng phantomjs và 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(); 
}); 

Tôi đang chuyển đối số cho tệp này: số vé được nối thêm vào URL thứ 2.

+0

Có một cuộc thảo luận về chủ đề này Tôi hiện đang trải qua trên Google Groups. Tôi có thể làm cho một ý chính liên quan đến điều này: https://groups.google.com/forum/?fromgroups=#!topic/phantomjs/20z8N8rwITw –

Trả lời

9

Tôi muốn giới thiệu CasperJS cho mục đích này.

CasperJS là một mã điều hướng mã nguồn mở & tiện ích thử nghiệm được viết bằng Javascript và dựa trên PhantomJS - công cụ WebKit không đầu có thể đọc được. Nó giúp giảm bớt quá trình xác định một kịch bản chuyển hướng đầy đủ và cung cấp chức năng cao cấp hữu ích, phương pháp & đường cú pháp để thực hiện nhiệm vụ phổ biến như:

  • định & đặt hàng chuyển hướng trình duyệt bước
  • điền & hình thức nộp
  • nhấp vào & các liên kết sau
  • chụp ảnh màn hình của một trang (hoặc một phần của trang)
  • kiểm tra từ xa DOM
  • sự kiện khai thác gỗ
  • tải nguồn lực, bao gồm cả những nhị phân
  • viết dãy phòng thử nghiệm chức năng, tiết kiệm results as JUnit XML
  • cạo nội dung Web

(từ trang web CasperJS)

Gần đây tôi đã dành một ngày cố gắng để có được PhantomJS của chính nó để làm những việc như điền vào một mẫu đăng nhập và na chuyển đến trang tiếp theo.

CasperJS có một mục đích API đẹp được xây dựng cho các hình thức cũng như:

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

Điều đáng nói đến là casperjs khó chạy trên nút, bạn phải sử dụng 'casperjs 'thay vào đó. – Akshat

+0

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

Các vấn đề liên quan