Selenium là một công cụ mạnh mẽ để kiểm soát trình duyệt web thông qua các chương trình và thực hiện tự động hóa trình duyệt. Nó có chức năng cho tất cả các trình duyệt, hoạt động trên tất cả các hệ điều hành chính và các tập lệnh của nó được viết bằng nhiều ngôn ngữ khác nhau. e Python, Java, C#, v.v., chúng tôi sẽ làm việc với Python
Thanh cuộn giúp bạn di chuyển màn hình tròn theo hướng dọc nếu cuộn trang web hiện đại không còn là vị trí nhìn thấy của màn hình. Nó được sử dụng để vận chuyển cửa sổ lên và xuống. Selenium Webdriver hiện không còn yêu cầu cuộn để thực hiện các bước di chuyển vì nó thao tác DOM. Nhưng trong các trang web tích cực, các yếu tố xuất hiện tốt nhất ngay khi người đó cuộn đến chúng. Trong những trường hợp như vậy, cuộn có thể cần thiết
Đôi khi chúng ta cần thực hiện hành động trên một phần tử không có trong khu vực có thể xem được của trang. Chúng ta cần cuộn xuống trang để đến phần tử đó
Selenium không thể thực hiện hành động cuộn trực tiếp. Điều này có thể đạt được với sự trợ giúp của lớp Javascript Executor và Actions trong Selenium. DOM có thể hoạt động trên tất cả các phần tử trên trang web với sự trợ giúp của Javascript
Selenium có thể thực thi các lệnh trong Javascript với sự trợ giúp của phương thức exec_script[]. Đối với giải pháp Javascript, chúng tôi phải chuyển giá trị thực cho phương thức scrollIntoView[] để xác định đối tượng bên dưới vị trí hiện tại của chúng tôi trên trang. Chúng ta có thể thực hiện chuyển động của chuột với sự trợ giúp của lớp Actions trong Selenium
Thí dụ
Triển khai mã với Javascript Executor
import time from selenium import webdriver driver = webdriver.Chrome [executable_path="C:\chromedriver.exe"] driver.get["//www.tutorialspoint.com/index.htm"] # identify element l= driver.find_element_by_xpath["//*[text[]='About Us']"] # Javascript Executor driver.execute_script["arguments[0].scrollIntoView[true];", l] time.sleep[0.4] driver.close
Trong khi làm việc với lớp Actions để scroll xem ta phải sử dụng phương thức moveToElement[]. Phương pháp này sẽ thực hiện di chuyển chuột cho đến giữa phần tử
Nếu chúng tôi muốn chuyển xuống một trang hoặc muốn tìm kiếm thứ gì đó trên một trang không được xem, chúng tôi sử dụng thao tác cuộn để đến đó. Có thể tự động cuộn trang bằng Selenium không? . Nhưng chúng ta có thể đạt được điều đó với một số tính năng javascript bổ sung được bật trong Python bằng cách sử dụng đối tượng trình điều khiển. Trong selen, có thể cuộn xuống trang theo ba cách khác nhau. Hôm nay chúng ta sẽ cố gắng tìm hiểu về cả ba tùy chọn có thể
Thiết lập môi trường
Vì tôi có niềm đam mê du lịch, tôi thích đọc blog du lịch. Hôm nay chúng ta sẽ thử cuộn trang web có tên “50 điểm du lịch được ghé thăm nhiều nhất trên thế giới”
Vì vậy, chúng ta hãy bắt đầu quá trình. Trước tiên, chúng ta cần nhập WebDriver
từ selen và sau đó tạo một đối tượng trình điều khiển từ nó. Tiếp theo, chúng tôi cần chỉ định đường dẫn của ChromeDriver
vì chúng tôi sẽ sử dụng trình duyệt chrome để cuộn trang. Phương pháp maximize_window[]
có sẵn để có cái nhìn tốt hơn. Sau đó, chúng tôi sẽ cố gắng kết nối với trang web bằng phương pháp driver.get[]
. Chúng tôi sẽ sử dụng đợi ngầm định trong 10 giây. Chính sách cookie sẽ xuất hiện ở cuối trang khi chúng tôi kết nối. Chúng ta cần tìm WebElement của nút “OK, got it” để chấp nhận và sau đó nhấp vào nút đó
from selenium import webdriver driver = webdriver.Chrome[executable_path = r'G:/chromedriver_win32/chromedriver.exe'] driver.maximize_window[] driver.get['//www.lovehomeswap.com/blog/latest-news/the-50-most-visited-tourist-attractions-in-the-world'] driver.implicitly_wait[10] cookie = driver.find_element_by_link_text['OK, got it'] cookie.click[]
Cuộn xuống trang theo pixel
Có thể cuộn một trang với số pixel. Có một phương thức tên là
driver.execute_script["window.scrollBy[0,500]",""]0 cho phép chúng ta cuộn một trang. Lệnh đi như thế này
driver.execute_script["window.scrollBy[0,500]",""]
Ở đây chúng ta cần nhập hai tham số trong phương thức
driver.execute_script["window.scrollBy[0,500]",""]1. 0 là vị trí pixel bắt đầu hoặc pixel mặc định và 500 là vị trí pixel chúng tôi muốn cuộn đến. Bằng cách thay đổi các giá trị này, có thể cuộn xuống từ nơi này sang nơi khác. Tham số thứ hai của phương thức
driver.execute_script["window.scrollBy[0,500]",""]0 sẽ vẫn trống. Hãy thử làm điều đó trên trang web
driver.execute_script["window.scrollBy[0,3000]",""]
Vì chúng ta đã đặt tham số thứ 2 của phương thức
driver.execute_script["window.scrollBy[0,500]",""]1 từ 500 thành 3000, chúng ta có thể thấy thanh cuộn ở phía bên tay phải không ở vị trí mặc định của nó. Nó đã cuộn xuống một chút ở vị trí 3000 pixel. Bằng cách thay đổi tham số thứ hai, chúng tôi có thể truy cập các địa điểm nhất định trên một trang với sự trợ giúp của phương pháp này
Cuộn xuống trang cho đến khi phần tử được tìm thấy
Bây giờ chúng tôi muốn tìm kiếm một phần tử cụ thể trong trang web nhưng chúng tôi không biết vị trí pixel chính xác cho điểm đó. Làm cách nào chúng ta có thể cuộn xuống phần tử cụ thể đó?
Để làm việc với lệnh này, đầu tiên chúng ta cần xác định phần tử muốn xem, sau đó chúng ta sẽ lưu nó vào một biến. Một lần nữa, chúng ta sẽ sử dụng phương thức
driver.execute_script["window.scrollBy[0,500]",""]0 và nó cũng sẽ nhận hai tham số. Chúng tôi sẽ nhập “
driver.execute_script["window.scrollBy[0,500]",""]5” làm tham số đầu tiên và biến chứa phần tử được xác định làm tham số thứ hai. Hy vọng rằng thanh cuộn sẽ tự động di chuyển đến nơi đặt phần tử
Hãy thử tìm phần tử
driver.execute_script["window.scrollBy[0,500]",""]6 từ trang web. Chúng tôi muốn đặt cuộn của bạn để tự động xem phần tử này. Mã sau sẽ đủ tốt
niagara_falls = driver.find_element_by_link_text['Niagara Falls'] driver.execute_script["arguments[0].scrollIntoView[];",niagara_falls]
Ở đây, chúng tôi đã cố gắng tìm phần tử bằng văn bản liên kết và tạo một biến
driver.execute_script["window.scrollBy[0,500]",""]7 với vị trí là
driver.execute_script["window.scrollBy[0,500]",""]8. Ở dòng tiếp theo, chúng ta thực hiện lệnh với phương thức
driver.execute_script["window.scrollBy[0,500]",""]9
Thác Niagara xuất hiện ở đầu trang. đôi khi nó có thể không hiển thị do thanh “Đăng nhập”. Sau đó, bạn cần cuộn lên một chút để xem
Cuộn xuống cho đến cuối trang
Cũng có thể sử dụng phương pháp
driver.execute_script["window.scrollBy[0,3000]",""]0 để cuộn xuống cuối bất kỳ trang nào. lệnh sẽ trông như thế này
driver.execute_script["window.scrollBy[0,document.body.scrollHeight]"]
Ở đây một lần nữa, chúng ta sẽ sử dụng câu lệnh javascript bên trong phương thức
driver.execute_script["window.scrollBy[0,500]",""]0. Phương thức
driver.execute_script["window.scrollBy[0,500]",""]1 sẽ nhận hai tham số. Cái đầu tiên là 0 làm điểm bắt đầu ban đầu và cái thứ hai phải được javascript định nghĩa là “
driver.execute_script["window.scrollBy[0,3000]",""]3” vì nó giúp người cuộn đến điểm kết thúc của trang. Nếu chúng tôi chạy mã, chúng tôi sẽ thấy trang như thế này
Chúng ta có thể thấy từ phía bên tay phải rằng thanh cuộn đã đi đến điểm kết thúc của trang
Vì vậy, đó là tất cả về các phương pháp chúng ta sử dụng ngày nay trong Selenium python để tự động cuộn xuống trình duyệt. Tôi hy vọng bạn sẽ thấy hữu ích khi tìm hiểu thêm về Selenium
Yassin Mahmud Abdul Quddus
Yassin Mahmud là một người đam mê blockchain và là người sáng tạo nội dung trong không gian blockchain. Được thúc đẩy bởi niềm đam mê công nghệ phân tán, anh ấy đã chuyển sang lĩnh vực chuỗi khối từ quá trình phát triển ngăn xếp MERN. Với hơn nửa thập kỷ kinh nghiệm hiện tại, anh ấy đang cố gắng đóng góp cho cộng đồng blockchain bằng bài viết của mình. Khi Yassin không viết lách, người ta có thể bắt gặp anh ta đang đi dạo dọc theo các bãi biển hoặc tham quan các địa điểm du lịch ngoạn mục