Selenium python location_once_scrolled_into_view

Khi sử dụng Selenium WebDriver, bạn có thể gặp phải tình huống cần cuộn một phần tử vào chế độ xem

Bằng cách chạy các lệnh trong các bước sau, bạn có thể tương tác thử một giải pháp bằng Google Chrome

1. Thiết lập môi trường đầu và cài đặt gói Selenium

Thói quen thông thường của tôi khi bắt đầu một dự án đầu như thế này là thiết lập một môi trường Python sạch với virtualenv

# In your shell:
mkdir scrolling
cd scrolling/
virtualenv env
. env/bin/activate
pip install selenium

2. Khởi chạy trình thông dịch Python, mở phiên Chrome bằng gói selen và điều hướng đến Google Tin tức

$ python
...
>>> from selenium import webdriver
>>> d = webdriver.Chrome()
>>> d.get("http://news.google.com/")

3. Xác định phần tử dùng làm tiêu đề cho phần "Phổ biến nhất" của trang, sau đó cuộn đến phần tử đó bằng cách thực thi hàm JavaScript scrollIntoView()

>>> element = d.find_element_by_xpath("//span[.='Most popular']")
>>> element.text
u'Most popular'
>>> d.execute_script("return arguments[0].scrollIntoView();", element)

Lưu ý rằng các liên kết Python WebDriver cũng cung cấp thuộc tính hiện cuộn phần tử vào chế độ xem khi được truy xuất

Tuy nhiên, thuộc tính đó được ghi chú trong tài liệu mô-đun selen là có thể thay đổi mà không có cảnh báo - và nó cũng đặt phần tử ở cuối chế độ xem (chứ không phải trên cùng), vì vậy tôi thích sử dụng scrollIntoView()

4. Cuộn phần tử xuống một vài px về phía trung tâm của chế độ xem, nếu cần

Sau khi mã ở trên cuộn phần tử lên trên cùng của cửa sổ, bạn có thể thấy mình cần cuộn tài liệu ngược lại để di chuyển phần tử một chút về phía giữa cửa sổ - điều này có thể cần thiết nếu phần tử bị ẩn dưới phần tử khác (ví dụ:

Việc cuộn như vậy rất dễ thực hiện - JS này cuộn tài liệu về phía sau 150px, đặt phần tử của bạn gần trung tâm của chế độ xem hơn

>>> d.execute_script("window.scrollBy(0, -150);")

Đó là tất cả cho bây giờ;

Nói chung, tất cả các thao tác thú vị tương tác với tài liệu sẽ được thực hiện thông qua giao diện này

Tất cả các cuộc gọi phương thức sẽ thực hiện kiểm tra độ mới để đảm bảo rằng tham chiếu phần tử vẫn hợp lệ. Về cơ bản, điều này xác định xem phần tử có còn được gắn vào DOM hay không. Nếu thử nghiệm này không thành công, thì một

element = element.find_elements(By.CLASS_NAME, 'foo')
7 sẽ bị ném và tất cả các lần gọi tới phiên bản này trong tương lai sẽ không thành công

element = element.find_elements(By.CLASS_NAME, 'foo')
8

Trả về Cấp độ ARIA của phần tử web hiện tại

element = element.find_elements(By.CLASS_NAME, 'foo')
9

Trả về vai trò ARIA của phần tử web hiện tại

# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
0 ()→ Không có

Xóa văn bản nếu đó là thành phần nhập văn bản

# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
1 ()→ Không có

Nhấp vào phần tử

# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
2 ( by='id', value=None )→ selen. webdriver. Xa xôi. phần tử web. WebYếu tố

Tìm phần tử đã cho a Bằng chiến lược và bộ định vị

Cách sử dụng

element = element.find_element(By.ID, 'foo')

loại trả lại

# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
3 ( by='id', value=None )→ danh sách

Tìm các phần tử đã cho a Theo chiến lược và định vị

Cách sử dụng

element = element.find_elements(By.CLASS_NAME, 'foo')

loại trả lại

danh sách WebElement

# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
4 ( tên )→ str

Nhận thuộc tính hoặc thuộc tính đã cho của phần tử

Phương thức này trước tiên sẽ cố gắng trả về giá trị của thuộc tính có tên đã cho. Nếu một thuộc tính có tên đó không tồn tại, nó sẽ trả về giá trị của thuộc tính có cùng tên. Nếu không có thuộc tính nào có tên đó, thì trả về

# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
5

Các giá trị được coi là trung thực, tương đương với “true” hoặc “false”, được trả về dưới dạng boolean. Tất cả các giá trị khác không phải ______7_______5 được trả về dưới dạng chuỗi. Đối với các thuộc tính hoặc thuộc tính không tồn tại,

# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
5 được trả về

Để có được giá trị chính xác của thuộc tính hoặc thuộc tính, hãy sử dụng các phương pháp

# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
8 hoặc
# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
9 tương ứng

lập luận
  • name - Tên của thuộc tính/thuộc tính cần truy xuất

Thí dụ

# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")

text_length = target_element.get_dom_attribute("class")
0 ( tên )→ str

Lấy thuộc tính đã cho của phần tử. Không giống như

text_length = target_element.get_dom_attribute("class")
1, phương thức này chỉ trả về các thuộc tính được khai báo trong phần đánh dấu HTML của phần tử

lập luận
  • name - Tên của thuộc tính cần truy xuất
Cách sử dụng

text_length = target_element.get_dom_attribute("class")

text_length = target_element.get_dom_attribute("class")
2 ( tên )→ str. bool. WebYếu tố. mệnh lệnh

Lấy thuộc tính đã cho của phần tử

lập luận
  • name - Tên của tài sản để lấy
Cách sử dụng

text_length = target_element.get_property("text_length")

text_length = target_element.get_dom_attribute("class")
3

ID nội bộ được sử dụng bởi Selenium

Cái này chủ yếu dùng nội bộ. Các trường hợp sử dụng đơn giản như kiểm tra xem 2 phần tử web có tham chiếu đến cùng một phần tử hay không, có thể được thực hiện bằng cách sử dụng

text_length = target_element.get_dom_attribute("class")
4

if element1 == element2:
    print("These 2 are equal")

text_length = target_element.get_dom_attribute("class")
5 ()→ bool

Liệu phần tử có hiển thị với người dùng hay không

text_length = target_element.get_dom_attribute("class")
6 ()→ bool

Trả về xem phần tử có được bật hay không

text_length = target_element.get_dom_attribute("class")
7 ()→ bool

Trả về phần tử có được chọn hay không

Có thể được sử dụng để kiểm tra xem hộp kiểm hoặc nút radio có được chọn không

text_length = target_element.get_dom_attribute("class")
8

Vị trí của phần tử trong canvas có thể hiển thị

text_length = target_element.get_dom_attribute("class")
9

TÀI SẢN NÀY CÓ THỂ THAY ĐỔI MÀ KHÔNG CÓ CẢNH BÁO. Sử dụng công cụ này để khám phá vị trí của một phần tử trên màn hình để chúng ta có thể nhấp vào phần tử đó. Phương pháp này sẽ khiến phần tử được cuộn vào chế độ xem

Trả về vị trí góc trên cùng bên trái trên màn hình hoặc

# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
5 nếu phần tử không hiển thị

text_length = target_element.get_property("text_length")
1

Tham chiếu nội bộ đến phiên bản WebDriver, phần tử này được tìm thấy từ

text_length = target_element.get_property("text_length")
2

Một từ điển với kích thước và vị trí của phần tử

text_length = target_element.get_property("text_length")
3 ( tên tệp )→ bool

Lưu ảnh chụp màn hình của phần tử hiện tại vào tệp hình ảnh PNG. Trả về Sai nếu có bất kỳ IOError nào, ngược lại trả về True. Sử dụng đường dẫn đầy đủ trong tên tệp của bạn

lập luận
  • tên tập tin. Đường dẫn đầy đủ mà bạn muốn lưu ảnh chụp màn hình của mình vào. Điều này sẽ kết thúc với một. phần mở rộng png
Cách sử dụng

element.screenshot('/Screenshots/foo.png')

text_length = target_element.get_property("text_length")
4

Nhận ảnh chụp màn hình của phần tử hiện tại dưới dạng chuỗi được mã hóa base64

Cách sử dụng

img_b64 = element.screenshot_as_base64

text_length = target_element.get_property("text_length")
5

Nhận ảnh chụp màn hình của phần tử hiện tại dưới dạng dữ liệu nhị phân

Cách sử dụng

element_png = element.screenshot_as_png

text_length = target_element.get_property("text_length")
6 ( *giá trị )→ Không có

Mô phỏng gõ vào phần tử

lập luận
  • giá trị - Một chuỗi để nhập hoặc thiết lập các trường biểu mẫu. Để đặt đầu vào tệp, đây có thể là đường dẫn tệp cục bộ

Sử dụng điều này để gửi các sự kiện quan trọng đơn giản hoặc để điền vào các trường biểu mẫu

form_textfield = driver.find_element(By.NAME, 'username')
form_textfield.send_keys("admin")

Điều này cũng có thể được sử dụng để thiết lập đầu vào tập tin

element = element.find_elements(By.CLASS_NAME, 'foo')
0

text_length = target_element.get_property("text_length")
7

Trả về một gốc bóng tối của phần tử nếu có một hoặc một lỗi. Chỉ hoạt động từ Chromium 96 trở đi. Các phiên bản trước của trình duyệt dựa trên Chromium sẽ đưa ra một ngoại lệ xác nhận

Làm cách nào để cuộn vào chế độ xem trong Python Selenium?

1 câu trả lời .
từ selen. webdriver. phổ thông. action_chains nhập ActionChains
phần tử = trình điều khiển. find_element_by_id("my-id")
hành động = ActionChains(trình điều khiển)
hành động. move_to_element(phần tử). trình diễn()
Hoặc, bạn cũng có thể "cuộn vào chế độ xem" qua scrollIntoView()
tài xế. exec_script("đối số[0]. scrollIntoView();", phần tử)

Làm cách nào để cuộn phần tử trong Selenium?

Cách cuộn đến phần tử trong Selenium .
Bước 1. Chuẩn bị trang web để kiểm tra. Không phải tất cả các trang đều có thể cuộn được. .
Bước 2. Tải trang bằng WebDriver. Bây giờ chúng ta có một trang để kiểm tra việc cuộn, hãy tải trang bằng Selenium WebDriver. .
Bước 3. Xác định vị trí phần tử mục tiêu. .
Bước 4. Di chuyển đến phần tử mục tiêu. .
Bước 5. Chạy thử nghiệm

Làm cách nào để tìm phần tử bằng XPath trong Selenium Python?

Chuyển đến tab Tên và nhấp chuột phải >> Kiểm tra. Khi kiểm tra phần tử web, nó sẽ hiển thị thẻ đầu vào và các thuộc tính như lớp và id. Sử dụng id và các thuộc tính này để xây dựng XPath, do đó, sẽ định vị trường tên