Software Dev - Freelancer
0902.035.028 - hainh2k3@gmail.com

Sử dụng GeckoFx thay thế cho webbrowser control

Bởi Nguyễn Hoàng Hải
ngày: cập nhật 510 Xem

Hi all,

Trong winform thì control Webbrowser sẽ sử dụng trình duyệt IE mặc định của máy tính để hiển thị, tuy nhiên nếu máy tính sử dụng chương trình của chúng ta là XP hay win 7 thì có thể nó đang sử dụng IE 7 hoặc 8, dẫn đến việc hiển thị CSS, html5 không tốt hoặc bị trang web thông báo đang sử dụng trình duyệt cũ. Ngoài ra thì cái webbrowser control mặc định của nó quá cùi bắp, cách đây tầm 3 – 4 năm mình phải thực hiện một số công việc automation trên web nên đã tìm ra cách thay thế nó bằng firefox thông qua thư viện GeckoFx.

Đây là một thư viện mã nguồn mở, các bạn có thể tìm thêm thông tin tại đây:  https://bitbucket.org/geckofx/geckofx/wiki/Home

Để cài đặt vào project các bạn có thể thông qua nuget như hình dưới đây:

Tìm từ khóa geckofx và install vào project.

Sau khi cài đặt xong các bạn vào thư mục đường dẫn project của các bạn và vào tiếp “packages\GeckoFX…..”, copy thư mục Output (Đây là thư mục chứa các thư viện xulrunner xử lý và hiển thị nội dung trang web) vào thư mục bin project của bạn và đổi tên, vd của mình là “firefox” như hình dưới đây:

Tiếp đến Add Reference file Geckofx-Winforms.dll trong thư mục “\packages\GeckoFX.1.0.5\lib” vào toolbox sau đó kéo vào form vị trí bạn cần thiết kế.

Giờ mình sẽ viết code để GeckoWebBrowser mở trang web tại sự kiện form load như sau:

public Form1()
  {
    InitializeComponent();
    //Khai báo đường dẫn thư mục xulrunner.
    Gecko.Xpcom.Initialize(Application.StartupPath + "\\firefox");
  }

  private void Form1_Load(object sender, EventArgs e)
  {
    //Chuyển hướng đến trang google.
    geckoWebBrowser1.Navigate("https://google.com.vn");
  }
}

Chú ý: Nếu bạn dùng visual studio 2017 có thể sẽ xảy ra lỗi khi build liên quan đến “CodeTaskFactory” và “Microsoft.Build.Tasks.v15.0.dll”. Nguyên nhân là do thư viện này họ sử dụng visual studio 2013 để build thì phải. Giải pháp khắc phục việc này là chuyển sang dùng thư viện geckofx45 cho phiên bản .NET 4.5 trở lên, hoặc khi cài xong nuget, các bạn copy toàn bộ folder ouput và lib của nó ra ngoài, uninstall nó ra và add các thư viện Geckofx-Core.dll, Geckofx-Winforms.dll lại.

Trong quá trình chạy debug nếu xuất hiện lỗi thì bạn nên chuyển project platform target về x64 hoặc x86 phù hợp nhé.

Mình có làm 1 video từ hồi 2016, các bạn có thể tham khảo hình dung cho dễ nhé:

Về cơ bản thì các sự kiện, thao tác với DOM document của nó khá giống với webbrower control. Mình sẽ có bài hướng dẫn về việc thao tác với DOM để auto 1 số trang web nhé, vd: như tự động đăng nhập, điền biểu mẫu, tìm kiếm nội dung trong trang web vv …

Đây là 1 cái tool mình làm có sử dụng geckofx để đăng nhập facebook sau đó kết xuất nội dung ra ngoài, mã nguồn của nó mình sẽ tìm lại nếu các bạn cần nhé.

 

4 2 votes
Article Rating

CÓ THỂ BẠN QUAN TÂM

Theo dõi
Notify of
0 Comments
Inline Feedbacks
Xem tất cả bình luận