Hướng dẫn selenium python find div by class - selenium python tìm div theo lớp

Vì vậy, tôi đang viết một kịch bản bằng selen nhưng tôi đã bị mắc kẹt trong việc tìm một lớp div.

Cấu trúc trên trang web là như thế này:

`

Đã thử một cái gì đó như driver.find_element_by_xpath["//field[@first_name]"] nhưng nó không hoạt động vì một số lý do, có lẽ tôi đã làm sai hoặc phải với nó theo một cách khác.

Có ai có manh mối không?

Đã hỏi ngày 16 tháng 6 năm 2015 lúc 17:51Jun 16, 2015 at 17:51

Bạn đang pha trộn các trình định vị lớp và Xpath một cách không được hỗ trợ!

Một trong những điều sau đây sẽ hoạt động:

driver.find_element_by_xpath["//div[contains[@class, 'first_name']]"]
driver.find_element_by_class_name["first_name"]

Bạn có thể muốn xem xét đọc một số tài liệu về XPath và có lẽ là người định vị selen nói chung.

xpy

5.3233 Huy hiệu vàng31 Huy hiệu bạc47 Huy hiệu đồng3 gold badges31 silver badges47 bronze badges

Đã trả lời ngày 16 tháng 6 năm 2015 lúc 18:00Jun 16, 2015 at 18:00

1

Selenium là một công cụ tự động hóa trình duyệt phổ biến. Sử dụng Selenium, bạn có thể tự động hóa hầu hết mọi hành động mà người dùng thông thường có thể thực hiện trên trình duyệt web. Ví dụ: với selenium, bạn có thể viết một tập lệnh nhỏ có thể mở một trang web và sau đó hoàn thành một biểu mẫu trên trang.

Tuy nhiên, để thực hiện một hoạt động như thế này, trước tiên, Selenium sẽ cần một cách để xác định vị trí từng phần tử trên biểu mẫu. Selenium cần tìm từng trường đầu vào trước khi nó có thể nhập văn bản vào đó.

May mắn thay, Selenium cung cấp một vài phương pháp bạn có thể sử dụng để tìm các yếu tố.

Một trong những tùy chọn mà Thư viện Selenium WebDriver cung cấp để định vị các phần tử HTML là việc sử dụng thuộc tính lớp.

Thuộc tính lớp HTML được sử dụng để đặt lớp thành phần tử HTML. Một cách sử dụng thuộc tính lớp là áp dụng các kiểu cho các yếu tố thông qua CSS. Bạn cũng có thể sử dụng các lớp để tương tác với các yếu tố cụ thể trong mã JavaScript của mình.

Đó là thực tế phổ biến cho nhiều yếu tố có cùng giá trị cho lớp. Như vậy, bất kỳ phong cách nào bạn xác định cho lớp áp dụng cho tất cả các yếu tố. Điều này cũng giống nhau cho mã JavaScript đề cập đến lớp.

Trong bài đăng này, bạn sẽ học cách tìm các yếu tố theo lớp trong selen bằng cách đi qua một ví dụ thực tế.

Phương thức Selenium by.Class []

Phương pháp này cho phép xác định vị trí một phần tử bằng cách tham chiếu tên lớp của nó. Phương thức Lớp [] được tìm thấy bên trong lớp của thư viện JavaScript Selenium WebDriver. Lớp cũng chứa các phương pháp thay thế khác để định vị các yếu tố.class[] method is found inside the By class of the Selenium WebDriver JavaScript library. The class also contains other alternative methods for locating elements.

Thư viện Selenium WebDriver cho các ngôn ngữ lập trình khác có một phương pháp tương tự để định vị các yếu tố. Ví dụ: Thư viện Python tìm các phần tử theo tên lớp bằng cách sử dụng hằng số class_name từ lớp của nó. Các đoạn mã sau đây hiển thị phương thức định vị phần tử selen cho Python, Java và JavaScript:CLASS_NAME constant from its By class. The following code snippets show the Selenium element locator method for Python, Java, and JavaScript:

Python

loginBtn=driver.find_element[By.CLASS_NAME,"login"]=driver.find_element[By.CLASS_NAME,"login"]

Java

WebEuity logInbtn = Driver.FindEuity [by.Class ["đăng nhập"]];loginBtn=driver.findElement[By.class["login"]];

JavaScript

Đặt đăng nhập = Await Driver.FindEuity [by.Class ['đăng nhập']];loginBtn=await driver.findElement[By.class['login']];

Trong các phần sau, chúng tôi sẽ xem xét một ví dụ chi tiết hơn về bộ chọn này trong hành động.

Điều kiện tiên quyết

Trước khi chúng tôi tiếp tục, hãy đảm bảo có những điều sau để bạn có thể theo dõi tốt hơn:

  • Một thiết lập hoạt động của selen và webdriver trên máy của bạn
  • Kiến thức cơ bản về JavaScript [hoặc bất kỳ ngôn ngữ nào khác mà WebDriver hỗ trợ]

Đối với bài đăng này, chúng tôi cho rằng bạn đã quen thuộc với việc thiết lập selen và bạn có thể viết mã bằng ngôn ngữ ưa thích của mình để kiểm soát trình duyệt bằng selenium. Kết quả là, chúng tôi đã giành chiến thắng khi bao gồm các bước để thiết lập selen.

Các bước

Đối với bài đăng này, chúng tôi sẽ viết một tập lệnh nhỏ tìm thấy các siêu liên kết trên trang web. Chúng tôi sẽ tìm thấy phần tử được liên kết với một liên kết cụ thể bằng cách sử dụng thuộc tính lớp của nó. Sau đó, chúng tôi sẽ thực hiện một hành động nhấp chuột trên liên kết. element associated with a specific link using its class property. After that, we’ll perform a click action on the link.

Chúng tôi sẽ sử dụng JavaScript trong suốt ví dụ của chúng tôi. Vì vậy, hãy để đi sâu vào các bước thực tế.

1. Tạo tệp tập lệnh

Đầu tiên, chúng tôi cần tạo một tệp mới trong đó chúng tôi sẽ viết mã cho tập lệnh của chúng tôi. Để làm điều đó, hãy tạo một tệp mới bên trong thư mục nơi bạn muốn chạy selenium và lưu tệp dưới dạng ví dụ.js.example.js.

Lưu ý: Đảm bảo bạn đã cài đặt gói nút selen trong thư mục. Nếu bạn bắt đầu với một thư mục mới, trống, bạn có thể cài đặt gói bằng cách chạy mã sau trong dấu nhắc thiết bị đầu cuối hoặc lệnh:: Make sure you already have the Selenium Node package installed in the directory. If you’re starting with a new, empty directory, you can install the package by running the following code in terminal or command prompt:

NPM Cài đặt Selenium-Webdriverinstall selenium-webdriver

Bước trên sẽ khác nếu bạn sử dụng selenium với một ngôn ngữ lập trình khác là JavaScript. Bạn có thể tìm thấy các hướng dẫn cụ thể hơn cho các ngôn ngữ khác trên trang tài liệu chính thức cho ngôn ngữ.

2. Tạo trang web để kiểm tra

Trước khi viết mã để tìm các yếu tố theo lớp trong selenium, hãy để Lôi tạo trang HTML mà chúng tôi sẽ tải.

Tạo một tệp mới trong cùng thư mục với bước đầu tiên và lưu tệp dưới dạng testPage.html. Sau đó, thêm mã sau vào tệp:testpage.html. Then, add the following code to the file:

    

& nbsp; & nbsp; & nbsp; & nbsp; trang thử nghiệmTest page

    TestimTestim

& nbsp; & nbsp; & nbsp; & nbsp; trang thử nghiệm

Từ mã trên, chúng tôi có một tài liệu HTML cơ bản bao gồm một siêu liên kết. Siêu liên kết có giá trị cho thuộc tính lớp được đặt thành liên kết. Trong bước tiếp theo, chúng tôi sẽ học cách tìm siêu liên kết này trong selen bằng cách sử dụng thuộc tính lớp của nó.

3. Thêm mã cho selen

Bây giờ chúng tôi đã thiết lập để bắt đầu viết một số mã JavaScript. Chúng tôi sẽ tạo ra một tập lệnh tìm các yếu tố sử dụng thuộc tính lớp của họ.example.js file you created earlier in step one, then add the following code to it:

const{Builder,By,Key,until}=require['selenium-webdriver'];{Builder,By,Key,until}=require['selenium-webdriver'];

[async[]=>{async[]=>{

Mở tệp example.js bạn đã tạo trước đó trong bước một, sau đó thêm mã sau vào nó:let driver=await newBuilder[].forBrowser['chrome'].build[];

    constURI='file:///Users/ea/Development/tutorial-examples/selenium-by-class/testpage.html';constURI= 'file:///Users/ea/Development/tutorial-examples/selenium-by-class/testpage.html';

& nbsp;await driver.get[URI];

& nbsp; & nbsp; & nbsp; & nbsp; đang chờ trình điều khiển.get [uri];await driver.wait[until.elementLocated[By.className['link']],1000];

& nbsp; & nbsp; & nbsp; & nbsp; đang chờ trình điều khiển.wait [cho đến khi.constfooterLink=await driver.findElement[By.className['link']];

    footerLink.click[];footerLink.click[];

& nbsp;][];

}] [];forBrowser[] method. For example, using forBrowser[“firefox”] will run the same tasks using Firefox.

Mã trên sẽ khởi tạo một thể hiện mới của WebDriver bằng Google Chrome. Bạn có thể thay đổi trình duyệt mặc định thành trình duyệt ưa thích của mình bằng cách thay đổi tham số cho phương thức forBrowSer []. Ví dụ, sử dụng Forbrowser [Fire Firefox] sẽ chạy các nhiệm vụ tương tự bằng Firefox.URI for the webpage we wish to open with Selenium.

Tiếp theo, chúng tôi sẽ đặt một URI cho trang web mà chúng tôi muốn mở với Selenium.: Make sure to replace the value for URI with the full path to testpage.html on your computer.

Lưu ý: Đảm bảo thay thế giá trị cho URI bằng đường dẫn đầy đủ đến TestPage.html trên máy tính của bạn.until.elementLocated[] and the By.className[] methods.

Sau khi ra mắt trình duyệt, Selenium sẽ đợi cho đến khi phần tử với lớp liên kết trực tuyến được tìm thấy. Chúng tôi đạt được điều này bằng cách sử dụng các phương thức cho đến khi.elementlocated [] và các phương thức BY.ClassName [].findElement[] and the By.className[] method again, Selenium finds the element with class “link.” And finally, Selenium performs a click operation on the element using the click[] action.

4. Chạy tập lệnh

Bây giờ chúng tôi đã thiết lập trang web thử nghiệm và tập lệnh selenium của chúng tôi, hãy để chạy tập lệnh.

Để làm điều đó, hãy chạy mã sau trong dấu nhắc thiết bị đầu cuối hoặc lệnh:

Nếu bạn làm theo tất cả các bước mà không có bất kỳ vấn đề nào, lệnh trên sẽ mở một cửa sổ Chrome mới tải testpage.html. Khi trang được tải, Selenium sẽ xác định vị trí liên kết với lớp liên kết trực tuyến và sau đó thực hiện nhấp chuột vào liên kết. Bạn có thể thấy kết quả trong hình ảnh sau:testpage.html. Once the page is loaded, Selenium will locate the link with class “link” and then perform a click on the link. You can see the result in the following image:

Hãy nhớ rằng, chúng tôi đã đề cập trước đó rằng nhiều yếu tố có thể có cùng tên lớp và bất kỳ phong cách nào chúng tôi xác định cho lớp áp dụng cho tất cả các yếu tố.

Theo mặc định, các hành động của Selenium không hoạt động tương tự. Điều đó có thể nói, nếu chúng tôi có một trang web có nhiều trường đầu vào có cùng tên lớp và chúng tôi tìm thấy một phần tử bằng lớp và sau đó thực hiện một hành động, hành động sẽ chỉ áp dụng cho phần tử đầu tiên.

Sự kết luận

Selenium là một công cụ phổ biến cho tự động hóa trình duyệt. Nó hỗ trợ nhiều trình duyệt và ngôn ngữ lập trình, do đó cung cấp sự linh hoạt hơn cho các nhà phát triển và người thử nghiệm.

Chúng tôi đã sử dụng selenium để tự động mở một trang web và sử dụng JavaScript và Chrome trong bài đăng này. Bạn có thể làm nhiều hơn nữa và sử dụng các ngôn ngữ yêu thích của bạn. Tuy nhiên, đối với phạm vi của bài đăng này, trọng tâm của chúng tôi là tìm các yếu tố HTML bằng thuộc tính lớp.

Mặc dù selen có lợi và linh hoạt, thiết lập ban đầu có thể gây căng thẳng. Ngoài ra, thực hiện các nhiệm vụ phức tạp sẽ yêu cầu viết mã phức tạp hơn. Ngoài ra, vì phương pháp chính để sử dụng Selenium liên quan đến việc viết mã, bạn có thể dành thêm thời gian gỡ lỗi mã thêm để kiểm tra ứng dụng của mình.

Testim cung cấp một giải pháp thay thế để giảm căng thẳng liên quan đến thiết lập và độ phức tạp trong việc viết mã tự động hóa trình duyệt. Bạn có thể thử Testim miễn phí ở đây.

Đọc gì tiếp theo

Selenium từng bước: Chờ cho đến khi phần tử có thể nhìn thấy

Selenium Grid 4: Hướng dẫn dành cho người mới bắt đầu

Tôi có thể tìm phần tử của lớp Selenium Python không?

Phương thức lớp []. Phương pháp này cho phép xác định vị trí một phần tử bằng cách tham chiếu tên lớp của nó. Phương thức Lớp [] được tìm thấy bên trong lớp của thư viện JavaScript Selenium WebDriver. Lớp cũng chứa các phương pháp thay thế khác để định vị các yếu tố.This method makes it possible to locate an element by referencing its class name. The class[] method is found inside the By class of the Selenium WebDriver JavaScript library. The class also contains other alternative methods for locating elements.

Là một lớp học trong selen?

Khởi tạo một thể hiện mới của lớp bằng cách sử dụng các chức năng đã cho để tìm các yếu tố. Nhận hoặc đặt giá trị của mô tả cho phiên bản này. Nhận hoặc đặt phương thức được sử dụng để tìm một phần tử phù hợp với các tiêu chí được chỉ định. Nhận hoặc đặt phương thức được sử dụng để tìm tất cả các yếu tố khớp với các tiêu chí được chỉ định.. Gets or sets the value of the description for this By class instance. Gets or sets the method used to find a single element matching specified criteria. Gets or sets the method used to find all elements matching specified criteria.

Làm thế nào để tôi tìm thấy các lớp học trong selen?

Chúng ta có thể tìm thấy một phần tử bằng cách sử dụng tên lớp thuộc tính với selenium webdriver bằng cách sử dụng các trình định vị - tên lớp, CSS hoặc XPath.Để xác định phần tử có CSS, biểu thức phải là TagName [class = 'value'] và phương thức được sử dụng là bằng.CssSelector.using the locators - class name, css, or xpath. To identify the element with css, the expression should be tagname[class='value'] and the method to be used is By. cssSelector.

Làm thế nào để bạn tìm thấy một yếu tố trong selen?

Cú pháp để tìm một nguyên tố trong selen..
Tên lớp..
Tên thẻ ..
Văn bản liên kết..
Văn bản liên kết từng phần ..
XPath..
Bộ chọn CSS ..

Bài Viết Liên Quan

Chủ Đề