Selenium không khó
|

Selenium không khó: Tự động đăng nhập facebook với Selenium

This entry is part 2 of 3 in the series Selenium không khó

Chào các bạn đã quay lại với Series mang tên: Selenium không khó của Lập trình không khó. Ở bài viết trước chúng ta đã cùng nhau đi cài đặt môi trường để sử dụng Selenium với ngôn ngữ Python. Trong bài hôm nay, mình sẽ hướng dẫn các bạn xây dựng ứng dụng đầu tiên: tự động đăng nhập facebook với Selenium. Bài này mình sẽ hướng dẫn rất chi tiết từng bước một để bạn có thể hoàn thiện ứng dụng đăng nhập facebook tự động nhé.

Tự động đăng nhập Facebook với Selenium
Tự động đăng nhập Facebook với Selenium

Quy trình thực hiện

Dưới đây là từng bước chi tiết mà chúng ta cần làm để có thể xây dựng được ứng dụng tự động đăng nhập facebook với Selenium trên Python.

  1. Mở trình và truy cập vào https://facebook.com
  2. Truy xuất Css selector của các thành phần sau: ô nhập tài khoản, ô nhập mật khẩu, button đăng nhập
  3. Nhập thông tin đăng nhập vào các ô tài khoản và mật khẩu
  4. Nhấp vào button đăng nhập
  5. Kiểm tra đăng nhập thành công hay không.

Tự động đăng nhập facebook với Selenium

Một số thư viện chúng ta cần import để đảm bảo code của chúng ta hoạt động:

Dưới đây là sườn của code mà chúng ta sẽ cùng nhau đi xây dựng, chúng ta có class FacebookLogin với:

  • Hàm khởi tạo nhận vào 2 tham số là tài khoản và mật khẩu. Hàm này cũng sẽ khởi tạo 1 trình duyệt và truy cập tới trang chủ của facebook – cũng chính là trang đăng nhập.
  • Hàm đăng nhập thực hiện tìm kiếm và nhập giá trị cho các trường tài khoản, mật khẩu trên website và sau đó nhấp vào button đăng nhập để thực hiện hành động đăng nhập.
  • Hàm kiểm tra đăng nhập để xem xét việc đăng nhập có thành công hay không.

Để việc đăng nhập không diễn ra quá nhanh, làm giả lập thì cũng phải giống người làm để tránh bị phát hiện. Chúng ta sẽ xây dựng 1 hàm random thời gian chờ sau mỗi hành động.

Xây dựng chức năng đăng nhập

Chúng ta sẽ thực hiện đăng nhập theo quy trình sau:

  1. Truy cập vào trang đăng nhập của facebook
  2. Truy xuất css selector của các thẻ input username và password, cả button đăng nhập nữa
  3. Truyền thông tin tài khoản, mật khẩu vào các thẻ input tương ứng
  4. Click vào button đăng nhập.

Cách truy xuất tới một phần tử

Để truy xuất một địa chỉ URL với Selenium, bạn làm như sau:

Bạn có thể tìm kiếm các thẻ, các phần tử html bằng một trong các cách sau đây:

  • Sử dụng selector
  • Sử dụng thuộc tính class
  • Sử dụng thuộc tính id
  • Sử dụng thuộc tính xpath

Với mỗi cách trên sẽ có 2 hàm: hoặc là tìm và trả về một phần tử duy nhất là phần tử đầu tiên tìm được, hoặc là trả về một list các phần tử. Các bạn xem thêm tại link số [3] trong mục tài liệu bổ sung nhé.

Sau đây mình sẽ chỉ ví dụ với selector nhé:

  • Cách tìm kiếm selector/id/xpath/class của phần tử trên trình duyệt
Cách copy được selector của phần tử trên trình duyệt
Cách copy được selector của phần tử trên trình duyệt

Lấy và trả về tất cả các phần tử theo selector

Bạn nên dùng khi mà bạn muốn lấy danh sách phần tử, nếu bạn chỉ cần 1 phần tử thì không nên dùng.

Lấy và trả về phần tử đầu tiên tìm được theo selector

Cách đếm xem có bao nhiêu phần tử đang có trên trang web đó

Cách đếm số phần tử đang có theo selector
Cách đếm số phần tử đang có theo selector

Sử dụng selector hoặc xpath là cách nhanh nhất và tốt nhất để truy xuất được tới phần tử mình cần. Tuy nhiên, trong nhiều trường hợp bạn sẽ phải tìm cách để tự lấy được selector để lấy được các phần tử mà bạn mong muốn.

Cách nhập giá trị cho thẻ input

Bạn sử dụng hàm send_keys, hàm này cũng cho phép gửi đi một phím nhấn trên bàn phím bạn nhé.

Cách click vào một phần tử dùng Selenium

Mỗi element mà bạn tìm được đều có hàm click(), bạn chỉ việc gọi đến là xong.

Như vậy, hàm login() của chúng ta sẽ được viết như sau. Lưu ý là sau mỗi hành động chúng ta sẽ sleep vài giây để tránh việc thực thi quá nhanh.

Xây dựng hàm kiểm tra đăng nhập thành công

Bạn có thể kiểm tra, nếu đăng nhập thành công thì bạn sẽ không thể tìm thấy element username_ele này nữa. Như vậy, chúng ta chỉ cần xem có tìm được phần tử này không là sẽ biết đăng nhập thành công không. Đây chỉ là một trong số vô vàn cách để bạn có thể thực hiện nhé.

Lý do: Nếu driver không tìm được phần tử thì nó sẽ raise ra một exception. Do đó, nếu xảy ra except tức là bạn đăng nhập thành công rồi.

Code Selenium tự động đăng nhập Facebook

Dưới đây là full source code của chức năng tự động đăng nhập fb, để xem kết quả thì bạn có thể quay lại ảnh gif ở đầu bài nhé.

Cách chạy:

Xin chào và hẹn gặp lại các bạn trong các bài viết tiếp theo của series Selenium không khó!

Tài liệu bổ sung

  1. https://selenium-python.readthedocs.io/
  2. https://pypi.org/project/selenium/
  3. https://selenium-python.readthedocs.io/locating-elements.html

Similar Posts

Subscribe
Notify of
guest
12 Bình luận
Inline Feedbacks
View all comments