Tôi cần truy cập DOM của tài liệu HTML sau khi thực hiện javascript trên trang. Tôi có mã dưới đây kết nối với URL và nhận tài liệu. Vấn đề là nó không bao giờ có được DOM sau khi sửa đổi với javascriptTruy cập DOM bằng WebBrowser
public class CustomBrowser
{
public CustomBrowser()
{
//
// TODO: Add constructor logic here
//
}
protected string _url;
string html = "";
WebBrowser browser;
public string GetWebpage(string url)
{
_url = url;
// WebBrowser is an ActiveX control that must be run in a
// single-threaded apartment so create a thread to create the
// control and generate the thumbnail
Thread thread = new Thread(new ThreadStart(GetWebPageWorker));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
string s = html;
return s;
}
protected void GetWebPageWorker()
{
browser = new WebBrowser();
// browser.ClientSize = new Size(_width, _height);
browser.ScrollBarsEnabled = false;
browser.ScriptErrorsSuppressed = true;
//browser.DocumentCompleted += browser_DocumentCompleted;
browser.Navigate(_url);
// Wait for control to load page
while (browser.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
Thread.Sleep(5000);
var documentAsIHtmlDocument3 = (mshtml.IHTMLDocument3)browser.Document.DomDocument;
html = documentAsIHtmlDocument3.documentElement.outerHTML;
browser.Dispose();
}
}
Tôi hy vọng rằng ai đó có thể giúp tôi với vấn đề này
Vui lòng không đăng mã dưới dạng hình ảnh. Đăng mã dưới dạng văn bản. Ngoài ra, bạn nên sử dụng các sự kiện để tìm thấy khi điều hướng hoàn thành, không phải là một vòng lặp 'while' với' Application.DoEvents() 'hoặc' Thread.Sleep() '. –
Tôi đã thêm mã dưới dạng văn bản, hình ảnh để làm rõ sự khác biệt giữa trình duyệt trong trình duyệt và những gì tôi nhận được –
Làm cách nào để sử dụng một điều khiển thay thế? Ví dụ. http://stackoverflow.com/questions/790542/replacing-net-webbrowser-control-with-a-better-browser-like-chrome – user1946932