2016-09-07 20 views
5

Tôi có tập lệnh Phantomjs cố gắng mở url. phantomjs trả về lỗi này:Phantomjs không thể mở trang mà trình duyệt mở ra

Unable to load resource (request ID:undefinedURL:http://foo.bar/tree/nav_value/27) 
Error code: 203. Description: Error downloading http://foo.bar/tree/nav_value/27 - server replied: Not Found 

Nhưng khi tôi mở url http://foo.bar/tree/nav_value/27 với trình duyệt chrome, không có vấn đề và trang web được tải một cách chính xác!

Đây là kịch bản:

// Read the Phantom webpage '#intro' element text using jQuery and "includeJs" 

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

if (system.args.length != 2) { 
    console.log("please pass 2 argument") 
} 
var company_id = system.args[1] 
console.log("c", company_id) 

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

page.onResourceError = function(resourceError) { 
    console.log('Unable to load resource (request ID:' + resourceError.id + 'URL:' + resourceError.url + ')'); 
    console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString); 

}; 

page.onError = function(msg, trace) { 
    console.log("error", msg) 
} 

var nav_value; 

page.open("http://foo.bar/tree/nav_value/27", 'post', 'username=navid&password=test', function(status) { 
    if (status === "success") { 
     page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() { 
      page.evaluate(function() { 
       nav_value = parseInt($("#value").text()); 
      }); 
      phantom.exit(0); 
     }); 
    } else { 
     phantom.exit(1); 
    } 
}); 

EDIT:

Something lẻ xảy ra. Khi tôi chạy mã này với các phantomj trên các cửa sổ trên một máy khác, nó hoạt động. Nhưng trên Ubuntu nó trả về lỗi!

Url mà các phantomj đang cố gắng mở nằm trên cùng một máy chủ. (Ubuntu)

Sự cố là gì?

+1

'Nhưng khi tôi mở url bằng chrome' - bạn có thực hiện yêu cầu GET với Chrome không? Lưu ý rằng bạn thực hiện một yêu cầu POST với PhantomJS. – Vaviloff

+0

vâng tôi thực hiện yêu cầu GET. Liệu nó có làm cho một sự khác biệt? – Navid777

+0

Tùy thuộc vào trang web mà nó có thể thực hiện. Hãy thử yêu cầu cùng một trang với yêu cầu GET trong PhantomJS ngay bây giờ vì mục đích thử nghiệm. Nếu trang vẫn không được tìm thấy ... có thể có lỗi đánh máy trong kịch bản không? Đáng tiếc là bạn không thể hiển thị URL của trang web, tôi có một vài giả thuyết khác về lý do lỗi này có thể xảy ra. – Vaviloff

Trả lời

1

Không chắc chắn điều này sẽ hữu ích, nhưng tôi có một số ý tưởng đã giúp tôi tìm ra các vấn đề với PhantomJS trong quá khứ.

Trước tiên, như bạn nói nó hoạt động trên một máy khác, bạn có thể muốn thử nghiệm other versions of PhantomJS, bằng cách tải xuống tệp thực thi và chỉ định đường dẫn trên tập lệnh Python của bạn. Phiên bản 1.9.8 đã giúp tôi bỏ qua một số hạn chế bảo mật trong quá khứ (tôi cũng đã để lại một số cài đặt trong trường hợp có thể có sự quan tâm).

driver = webdriver.PhantomJS(
    executable_path='/path/to/the/downloaded/phantomjs19', 
    # you can specify args, such as: 
    service_args=[ 
     '--ignore-ssl-errors=true', 
     '--ssl-protocol=any', 
     '--web-security=false', 
    ], 
    # and also other capabilities: 
    desired_capabilities={ 
     'phantomjs.page.settings.resourceTimeout': '5000', 
     'phantomjs.page.settings.userAgent': (
      "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 " 
      "(KHTML, like Gecko) Chrome/15.0.87" 
     ), 
    }, 
) 

Bạn cũng có thể thử xem liệu việc nâng cấp Selen có giúp ích hay không.

pip install selenium --upgrade 

Một ý tưởng khác có thể giúp hiểu những gì đang xảy ra là cố in ảnh chụp màn hình và đăng nhập nguồn trang trước khi lỗi xảy ra. Bạn có thể làm điều đó như:

# Set the window size to something appropriate for your tests. 
driver.set_window_size(900, 800) 
driver.save_screenshot('screen.png') 

# Check if the page source matches your expectations. 
with open('temp.html', 'w') as f: 
    f.write(driver.page_source) 

Hãy cho tôi biết nếu điều này có ích!

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