2013-04-12 29 views
11

Tôi là một phần của dự án ASP.NET và C#. Chúng tôi đang cố gắng làm cho cổng thông tin asp.net của chúng tôi thân thiện với công cụ tìm kiếm Google (https://developers.google.com/webmasters/ajax-crawling/). Các trang web trong trang web của chúng tôi được tạo động và DOM được sửa đổi bằng JavaScript để chúng tôi sử dụng NHTML để tạo ảnh chụp nhanh (phía máy chủ) khi công cụ tìm kiếm của Google gửi yêu cầu. Nó tạo ra ảnh chụp nhanh HTML nhưng vấn đề là khi có lỗi tập lệnh trong trang, nó trả về trang được hiển thị một phần (nội dung được sửa đổi bởi JavaScript trang được hiển thị một phần). Các trang hoạt động hoàn hảo trong Trình duyệt.Có cách nào để buộc NHTMLUNIT bỏ qua lỗi JavaScript của trang và tiếp tục thực thi tập lệnh không?

Tôi đã thử các tùy chọn sau

ThrowExceptionOnScriptError = false, 
ThrowExceptionOnFailingStatusCode = false 

Nhưng không may mắn.

Có cách nào để buộc NHtmlUnit bỏ qua lỗi trang và tiếp tục thực hiện không?

Sau đây là mã

// Create a webclient. 
    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17) 
     { 
      ThrowExceptionOnScriptError = false, 
      ThrowExceptionOnFailingStatusCode = false 
     }; 

    webClient.WaitForBackgroundJavaScript(5000); 

    // Load the Page with the given URL. 
    HtmlPage htmlPage = webClient.GetHtmlPage(url); 

    // Return the page for the given URL as Text. 
    return htmlPage.WebResponse.ContentAsString; 

Trả lời

5
// Create a webclient. 
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17) 
    { 
     JavaScriptEnabled = true 
     ThrowExceptionOnScriptError = false, 
     ThrowExceptionOnFailingStatusCode = false, 
    }; 

webClient.WaitForBackgroundJavaScript(5000); 

HtmlPage htmlPage = webClient.GetHtmlPage(url); 

// Return the page for the given URL as Text. 
return htmlPage.WebResponse.ContentAsString; 

tôi nhận thấy bạn không bật JavaScript, xin lỗi nếu tôi sai.

+0

Tôi không biết về trường hợp của @ RAM, nhưng tôi đã cho phép tôi kích hoạt. Vấn đề là, tôi không chắc chắn đó là một vấn đề [N] HtmlUnit hơn là một vấn đề jQuery vì nó chạy bên trong một trình duyệt không đầu. Nó có thể phụ thuộc vào một cái gì đó HtmlUnit không cung cấp (như đối tượng cửa sổ, hoặc cái gì khác trình duyệt chính nó sẽ cung cấp). – Allov

+0

Có Tôi đã bật JavaScript. Mã JavaScript trong trang ném một ngoại lệ khiến NHTMLUNIT ngừng thực thi để trang được hiển thị một phần. JavaScript tương tự hoạt động trong Trình duyệt và hiển thị toàn bộ trang. – RAM

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