Tôi vẫn đang tìm hiểu và để trả lời một trong những câu hỏi của mình, nơi tôi được cho biết rằng có thể là do yếu tố được đề cập không có trong chế độ xem
Tôi đã xem qua tài liệu và SO, đây là câu trả lời phù hợp nhất. của cô
Bạn có thể sử dụng "tổ chức. openqa. selen. tương tác. Actions" để di chuyển đến một phần tử
Phần tử WebElement = trình điều khiển. findElement[By. id["my-id"]];
Hành động hành động = hành động mới [trình điều khiển];
hành động. moveToElement[phần tử];
## hành động. nhấp chuột[];
hành động. trình diễn[];
Khi tôi cố gắng sử dụng phần trên để cuộn đến phần tử. Nó nói WebElement không được xác định
Tôi nghĩ điều này là do tôi chưa nhập mô-đun có liên quan. Ai đó có thể chỉ ra những gì tôi phải nhập?
Nhưng trong khi chờ đợi ngay sau khi cố gắng tìm ra nó một thời gian. Tôi đã tìm ra phương thức nhập cho WebElement
Bạn có thể làm điều đó bằng mã, mẹo là chèn mã Javascript để trở thành trang web. Sau khi bạn tải một trang web, hãy cuộn xuống trang bằng cách chèn javascript. Bạn có thể cuộn xuống một số lượng cụ thể hoặc kéo xuống dưới cùng
khóa học liên quan
- Khóa học & ví dụ về tự động hóa web Selenium
Cuộn xuống trang web
Ví dụ
Trước khi bạn bắt đầu, hãy đảm bảo rằng Trình điều khiển Web Selenium đã được cài đặt và bạn đã cài đặt mô-đun Selenium. Trình điều khiển web phải là trình điều khiển web phù hợp với trình duyệt [cùng phiên bản]. Đối với Firefox đó là geckoDriver, đối với Chrome đó là ChromeDriver. Phiên bản trình điều khiển phải dành cho phiên bản trình duyệt, phiên bản lỗi thời rất có thể sẽ không hoạt động
Mã cuộn xuống selen được hiển thị bên dưới. Nó gọi phương thức
#_*_coding: utf-8_*_0 với javascript để cuộn đến cuối trang web
from selenium import webdriver
import time
browser=webdriver.Firefox[]
browser.get["//en.wikipedia.org"]
browser.execute_script["window.scrollTo[0,document.body.scrollHeight]"]
time.sleep[3]
browser.close[]
1
2
3
4
5
6
7
8
9
10
#_*_coding: utf-8_*_
from selenium import webdriver
import time
browser=webdriver.Firefox[]
browser.get["//en.wikipedia.org"]
browser.execute_script["window.scrollTo[0,document.body.scrollHeight]"]
time.sleep[3]
browser.close[]
Đầu tiên các mô-đun cần thiết được tải. Bạn sẽ cần mô-đun selen và mô-đun thời gian
1
2
3
#_*_coding: utf-8_*_
from selenium import webdriver
import time
Sau đó khởi tạo trình duyệt web. Đây có thể là Firefox hoặc một trình duyệt được hỗ trợ khác [Chrome, Edge, Safari]
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. Đầu tiên, chúng ta cần nhập
#_*_coding: utf-8_*_5 từ Selenium 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
from selenium import webdriver
import time
browser=webdriver.Firefox[]
browser.get["//en.wikipedia.org"]
browser.execute_script["window.scrollTo[0,document.body.scrollHeight]"]
time.sleep[3]
browser.close[]
#_*_coding: utf-8_*_6 vì chúng tôi sẽ sử dụng trình duyệt chrome để cuộn trang. Phương pháp
from selenium import webdriver
import time
browser=webdriver.Firefox[]
browser.get["//en.wikipedia.org"]
browser.execute_script["window.scrollTo[0,document.body.scrollHeight]"]
time.sleep[3]
browser.close[]
#_*_coding: utf-8_*_7 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 thức
from selenium import webdriver
import time
browser=webdriver.Firefox[]
browser.get["//en.wikipedia.org"]
browser.execute_script["window.scrollTo[0,document.body.scrollHeight]"]
time.sleep[3]
browser.close[]
#_*_coding: utf-8_*_8. 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
import time
browser=webdriver.Firefox[]
browser.get["//en.wikipedia.org"]
browser.execute_script["window.scrollTo[0,document.body.scrollHeight]"]
time.sleep[3]
browser.close[]
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
10
2
3
4
5
6
7
8
9
10
Vì chúng tôi đã đặt tham số thứ 2 của phương pháp
driver.execute_script["window.scrollBy[0,500]",""]1 từ 500 thành 3000, chúng tôi 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ể đó?
12
2
3
4
5
6
7
8
9
10
Để 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 tôi 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
16
2
3
4
5
6
7
8
9
10
Ở đâ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í
driver.execute_script["window.scrollBy[0,500]",""]8. Trong dòng tiếp theo, chúng tôi đã 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
100 để cuộn xuống cuối bất kỳ trang nào. lệnh sẽ trông như thế này
2
3
4
5
6
7
8
9
10
#_*_coding: utf-8_*_1
from selenium import webdriver
import time
browser=webdriver.Firefox[]
browser.get["//en.wikipedia.org"]
browser.execute_script["window.scrollTo[0,document.body.scrollHeight]"]
time.sleep[3]
browser.close[]
Ở đâ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à “
103” 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
2
3
4
5
6
7
8
9
10
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