Selenium không thể tìm thấy phần tử theo tên lớp Python

Một trong những khía cạnh cơ bản nhất của việc sử dụng Selenium là lấy các tham chiếu phần tử để làm việc với. Selenium cung cấp một số chiến lược định vị tích hợp để xác định duy nhất một phần tử. Có nhiều cách để sử dụng bộ định vị trong các tình huống rất nâng cao. Đối với mục đích của tài liệu này, hãy xem xét đoạn mã HTML này

  1. Tomato is a Vegetable
  • Tomato is a Fruit

Phần tử phù hợp đầu tiên

Nhiều bộ định vị sẽ khớp với nhiều yếu tố trên trang. Phương thức phần tử tìm số ít sẽ trả về một tham chiếu đến phần tử đầu tiên được tìm thấy trong một ngữ cảnh nhất định

Đánh giá toàn bộ DOM

Khi phương thức tìm phần tử được gọi trên phiên bản trình điều khiển, nó sẽ trả về một tham chiếu đến phần tử đầu tiên trong DOM khớp với bộ định vị được cung cấp. Giá trị này có thể được lưu trữ và sử dụng cho các hành động phần tử trong tương lai. Trong HTML ví dụ của chúng tôi ở trên, có hai phần tử có tên lớp là “cà chua” vì vậy phương thức này sẽ trả về phần tử trong danh sách “rau”

WebElement vegetable = driver.findElement(By.className("tomatoes"));
  

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
  

var vegetable = driver.FindElement(By.ClassName("tomatoes"));
  

vegetable = driver.find_element(class: 'tomatoes')
  

const vegetable = await driver.findElement(By.className('tomatoes'));
  

val vegetable: WebElement = driver.findElement(By.className("tomatoes"))
  

Đánh giá một tập hợp con của DOM

Thay vì tìm một công cụ định vị duy nhất trong toàn bộ DOM, việc thu hẹp tìm kiếm trong phạm vi của một phần tử được định vị khác thường rất hữu ích. Trong ví dụ trên, có hai phần tử có tên lớp là “cà chua” và sẽ khó khăn hơn một chút để lấy tham chiếu cho phần tử thứ hai

Một giải pháp là xác định vị trí một phần tử có thuộc tính duy nhất là tổ tiên của phần tử mong muốn chứ không phải tổ tiên của phần tử không mong muốn, sau đó gọi phần tử tìm trên đối tượng đó

WebElement fruits = driver.findElement(By.id("fruits"));
WebElement fruit = fruits.findElement(By.className("tomatoes"));
  

________số 8_______

IWebElement fruits = driver.FindElement(By.Id("fruits"));
IWebElement fruit = fruits.FindElement(By.ClassName("tomatoes"));
  

WebElement vegetable = driver.findElement(By.className("tomatoes"));
  
0

WebElement vegetable = driver.findElement(By.className("tomatoes"));
  
1

WebElement vegetable = driver.findElement(By.className("tomatoes"));
  
2

Java và C#
Các lớp

vegetable = driver.find_element(class: 'tomatoes')
  
3,
vegetable = driver.find_element(class: 'tomatoes')
  
4 và
vegetable = driver.find_element(class: 'tomatoes')
  
5 đều triển khai giao diện
vegetable = driver.find_element(class: 'tomatoes')
  
6, được coi là giao diện dựa trên vai trò. Giao diện dựa trên vai trò cho phép bạn xác định xem việc triển khai trình điều khiển cụ thể có hỗ trợ một tính năng nhất định hay không. Các giao diện này được xác định rõ ràng và cố gắng tuân thủ chỉ có một vai trò trách nhiệm duy nhất

Tra cứu lồng nhau có thể không phải là chiến lược vị trí hiệu quả nhất vì nó yêu cầu hai lệnh riêng biệt được cấp cho trình duyệt

Để cải thiện hiệu suất một chút, chúng ta có thể sử dụng CSS hoặc XPath để tìm phần tử này trong một lệnh. Xem các đề xuất chiến lược Định vị trong phần Thực hành thử nghiệm được khuyến khích của chúng tôi

Đối với ví dụ này, chúng tôi sẽ sử dụng Bộ chọn CSS

WebElement vegetable = driver.findElement(By.className("tomatoes"));
  
3

WebElement vegetable = driver.findElement(By.className("tomatoes"));
  
4

WebElement vegetable = driver.findElement(By.className("tomatoes"));
  
5

WebElement vegetable = driver.findElement(By.className("tomatoes"));
  
6

WebElement vegetable = driver.findElement(By.className("tomatoes"));
  
7

WebElement vegetable = driver.findElement(By.className("tomatoes"));
  
8

Tất cả các yếu tố phù hợp

Có một số trường hợp sử dụng cần lấy tham chiếu đến tất cả các phần tử khớp với bộ định vị, thay vì chỉ phần tử đầu tiên. Các phương thức tìm phần tử số nhiều trả về một tập hợp các tham chiếu phần tử. Nếu không có kết quả phù hợp, một danh sách trống được trả về. Trong trường hợp này, các tham chiếu đến tất cả các mục trong danh sách trái cây và rau củ sẽ được trả về trong bộ sưu tập

WebElement vegetable = driver.findElement(By.className("tomatoes"));
  
9

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
  
0

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
  
1

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
  
2

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
  
3

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
  
4

Nhận phần tử

Thường thì bạn nhận được một tập hợp các phần tử nhưng lại muốn làm việc với một phần tử cụ thể, điều đó có nghĩa là bạn cần lặp lại tập hợp và xác định phần tử bạn muốn

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
  
5

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
  
6

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
  
7

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
  
8

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
  
9

var vegetable = driver.FindElement(By.ClassName("tomatoes"));
  
0

Tìm phần tử từ phần tử

Nó được sử dụng để tìm danh sách các WebElements con phù hợp trong ngữ cảnh của phần tử cha. Để đạt được điều này, WebElement gốc được kết nối với ‘findElements’ để truy cập các phần tử con

Làm cách nào để chọn phần tử theo tên lớp trong Python Selenium?

Để tìm Phần tử HTML theo thuộc tính tên lớp bằng Selenium trong Python, gọi phương thức find_element() và chuyển By. CLASS_NAME làm đối số đầu tiên và tên lớp (của Phần tử HTML chúng ta cần tìm) làm đối số thứ hai.

Chúng ta có thể tìm phần tử dựa trên tên lớp bằng Selenium không?

Selen bởi. Phương thức này cho phép định vị một phần tử bằng cách tham chiếu tên lớp của nó . Phương thức class() được tìm thấy bên trong lớp By của thư viện JavaScript Selenium WebDriver. Lớp này cũng chứa các phương thức thay thế khác để định vị các phần tử. hãy đăng nhậpBtn = chờ trình điều khiển.

Làm cách nào để tìm phần tử theo tên lớp XPath trong Selenium?

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.

Làm cách nào để tìm phần tử theo giá trị trong Selenium Python?

Python – phương thức find_element() trong Selenium . Id về cơ bản là thuộc tính duy nhất được gán cho các thành phần của trang web như nút, hình ảnh, tiêu đề, v.v. Ghi chú. Phần tử đầu tiên có giá trị thuộc tính “id” khớp với vị trí sẽ được trả về.