Hướng dẫn find elements by class name selenium python not working - tìm phần tử theo tên lớp selenium python không hoạt động

//www.n11.com/telefon-ve-aksesuarlari/cep-telefonu-aksesuarlari

Trong trang web này, tôi đang cố gắng nhấp [nút trang tiếp theo]

Tôi muốn bắt được dòng này


Tôi đang viết mã này trong chương trình

data=driver.find_elements_by_class_name["next navigation"]

Câu hỏi của tôi là về vấn đề này .. nó không hoạt động

Mate Mrše

7.5149 Huy hiệu vàng31 Huy hiệu bạc70 Huy hiệu đồng9 gold badges31 silver badges70 bronze badges

Đã hỏi ngày 3 tháng 9 năm 2019 lúc 6:39Sep 3, 2019 at 6:39

1

data=driver.find_elements_by_class_name[] chỉ chấp nhận tên lớp đơn.

class="next navigation" Xác định hai lớp, nextnavigation.

Vì vậy, bạn chỉ có thể tìm kiếm next hoặc cho navigation như thế này:

data = driver.find_elements_by_class_name["next"]
data = driver.find_elements_by_class_name["navigation"]

Để tìm một phần tử bằng nhiều tên lớp, sử dụng XPath hoặc CssSselector: Tìm phần tử div bằng nhiều tên lớp?

data = driver.findElement[By.cssSelector[".next.navigation"]];

Đã trả lời ngày 3 tháng 9 năm 2019 lúc 6:43Sep 3, 2019 at 6:43

Micharazemicharazemicharaze

9157 Huy hiệu bạc24 Huy hiệu đồng7 silver badges24 bronze badges

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ệm!DOCTYPE html>

& nbsp; & nbsp; & nbsp; & nbsp; trang thử nghiệmhtml lang="en">

& nbsp; & nbsp; & nbsp; & nbsp; trang thử nghiệmhead>

    

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

& nbsp; & nbsp; & nbsp; & nbsp; trang thử nghiệm/head>

& nbsp; & nbsp; & nbsp; & nbsp; trang thử nghiệmbody>

& nbsp; & nbsp; & nbsp; & nbsp; trang thử nghiệmul>

    TestimTestim

& nbsp; & nbsp; & nbsp; & nbsp; trang thử nghiệm/ul>

& nbsp; & nbsp; & nbsp; & nbsp; trang thử nghiệm/body>

& nbsp; & nbsp; & nbsp; & nbsp; trang thử nghiệm/html>

& 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; & nbsp; & nbsp; & nbsp; đang chờ trình điều khiển.get [uri];await driver.get[URI];

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

& nbsp;constfooterLink=await driver.findElement[By.className['link']];

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

}] [];][];

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.forBrowser[] method. For example, using forBrowser[“firefox”] will run the same tasks using Firefox.

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.URI for the webpage we wish to open with Selenium.

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.: Make sure to replace the value for URI with the full path to testpage.html on your computer.

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 [].until.elementLocated[] and the By.className[] methods.

Tiếp theo, sử dụng findEuity [] và phương thức by.ClassName [] một lần nữa, selenium tìm thấy phần tử với liên kết lớp. Và cuối cùng, Selenium thực hiện thao tác nhấp chuột trên phần tử bằng hành động Click [].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

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

Selen bằng. 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ố. Hãy để đăng nhập = đang chờ trình điều khiển.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. let loginBtn = await driver.

Khi phương thức find_element_by_class_name được sử dụng để định vị một phần tử nào sau đây được trả về?

Phần tử đầu tiên với cú pháp XPath phù hợp với vị trí sẽ được trả về.Phần tử đầu tiên với giá trị văn bản liên kết khớp với vị trí sẽ được trả về.Phần tử đầu tiên với giá trị văn bản liên kết một phần khớp với vị trí sẽ được trả về.Phần tử đầu tiên với tên thẻ đã cho sẽ được trả về.

Làm cách nào để tìm kiếm một phần tử trong ClassName?

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à by.csselector.the expression should be tagname[class='value'] and the method to be used is By. cssSelector.

Làm cách nào để chọn một lớp trong Selenium Python?

Selenium ide mới Chúng tôi có thể chọn một giá trị tùy chọn menu thả xuống với selenium webdriver.Lớp chọn trong selen được sử dụng để xử lý thả xuống.Trong một tài liệu HTML, việc thả xuống được xác định với thẻ. tag.

Bài Viết Liên Quan

Chủ Đề