Cách tìm phần tử theo văn bản với Selenium

How Find Element Text With Selenium



Định vị và chọn các phần tử từ trang web là chìa khóa để tìm kiếm web với Selenium. Bạn có thể chọn các phần tử bằng cách sử dụng tên thẻ, ID, tên lớp, bộ chọn XPath, bộ chọn CSS, v.v. trong Selenium. Bạn cũng có thể chọn các phần tử có một văn bản cụ thể với Selenium. Điều này rất hữu ích để chọn các liên kết và nút từ trang web một cách dễ dàng. Ngay cả khi cấu trúc trang thay đổi, miễn là văn bản của phần tử trang web vẫn giữ nguyên, bộ chọn của bạn sẽ hoạt động tốt. Đây là lợi thế của việc chọn các liên kết và nút bằng cách sử dụng văn bản trong Selenium.

Trong bài viết này, tôi sẽ chỉ cho bạn cách định vị và chọn các phần tử từ các trang web bằng cách sử dụng văn bản trong Selenium với thư viện python Selenium. Vậy hãy bắt đầu.







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

Để thử các lệnh và ví dụ của bài viết này, bạn phải có:



  1. Bản phân phối Linux (tốt nhất là Ubuntu) được cài đặt trên máy tính của bạn.
  2. Python 3 đã được cài đặt trên máy tính của bạn.
  3. PIP 3 đã được cài đặt trên máy tính của bạn.
  4. Python virtualenv gói được cài đặt trên máy tính của bạn.
  5. Trình duyệt web Mozilla Firefox hoặc Google Chrome được cài đặt trên máy tính của bạn.
  6. Phải biết cách cài đặt Trình điều khiển Firefox Gecko hoặc Trình điều khiển Web Chrome.

Để đáp ứng các yêu cầu 4, 5 và 6, hãy đọc bài viết của tôi Giới thiệu về Selenium trong Python 3 .



Bạn có thể tìm thấy nhiều bài viết về các chủ đề khác trên LinuxHint.com . Hãy chắc chắn kiểm tra chúng nếu bạn cần bất kỳ hỗ trợ nào.





Thiết lập Thư mục Dự án:

Để giữ mọi thứ có tổ chức, hãy tạo một thư mục dự án mới selen-văn bản-chọn / như sau:

$mkdir -pvselen-văn bản-chọn/người lái xe



Điều hướng đến selen-văn bản-chọn / thư mục dự án như sau:

$đĩa CDselen-văn bản-chọn/

Tạo một môi trường ảo Python trong thư mục dự án như sau:

$virtualenv .venv

Kích hoạt môi trường ảo như sau:

$nguồn.venv//hoạt động

Cài đặt thư viện Selenium Python bằng PIP3 như sau:

$ pip3 cài đặt selen

Tải xuống và cài đặt tất cả trình điều khiển web được yêu cầu trong trình điều khiển / thư mục của dự án. Tôi đã giải thích quá trình tải xuống và cài đặt trình điều khiển web trong bài viết của mình Giới thiệu về Selenium trong Python 3 .

Tìm các phần tử theo văn bản:

Trong phần này, tôi sẽ chỉ cho bạn một số ví dụ về việc tìm và chọn các phần tử trang web theo văn bản với thư viện Selenium Python.

Tôi sẽ bắt đầu với ví dụ đơn giản nhất về việc chọn các phần tử trang web theo văn bản, chọn các liên kết từ trang web.

Trong trang đăng nhập của facebook.com, chúng tôi có một liên kết Bạn đã quên tài khoản? Như bạn có thể thấy trong ảnh chụp màn hình bên dưới. Hãy chọn liên kết này với Selenium.

Tạo một tập lệnh Python mới ex01.py và nhập các dòng mã sau vào đó.

từselennhập khẩuwebdriver
từselen.webdriver.chung.chìa khóa nhập khẩuChìa khóa
từselen.webdriver.chung.qua nhập khẩuQua
từ thời gian nhập khẩungủ
trình duyệt=webdriver.Trình duyệt Chrome(thực thi_path='./drivers/chromedriver')
trình duyệt.hiểu được('https://www.facebook.com/')
forgetAccountLink=trình duyệt.find_element(Qua.XPATH, '
// * [text () = 'Bạn đã quên tài khoản?'] '
)
forgetAccountLink.send_keys(Chìa khóa.ĐI VÀO)

Khi bạn đã hoàn tất, hãy lưu ex01.py Tập lệnh Python.

Dòng 1-4 nhập tất cả các thành phần bắt buộc vào chương trình Python.

Dòng 6 tạo Chrome trình duyệt đối tượng sử dụng người đánh bóng nhị phân từ trình điều khiển / thư mục của dự án.

Dòng 8 cho trình duyệt tải trang web facebook.com.

Dòng 10 tìm liên kết có văn bản Bạn đã quên tài khoản? Sử dụng bộ chọn XPath. Đối với điều đó, tôi đã sử dụng bộ chọn XPath // * [text () = ’Bạn quên tài khoản?’] .

Bộ chọn XPath bắt đầu bằng //, có nghĩa là phần tử có thể ở bất kỳ đâu trên trang. Các * biểu tượng cho Selenium biết để chọn bất kỳ thẻ nào ( đến hoặc P hoặc nhịp, v.v.) phù hợp với điều kiện bên trong dấu ngoặc vuông [] . Ở đây, điều kiện là, văn bản phần tử bằng Bạn đã quên tài khoản?

Các chữ() Hàm XPath được sử dụng để lấy văn bản của một phần tử.

Ví dụ, chữ() trả lại Chào thế giới nếu nó chọn phần tử HTML sau.

< đến href='http://dummysite.com'>Chào thế giới</ đến >

Dòng 11 gửi nhấn phím để Bạn đã quên tài khoản? Liên kết.

Chạy tập lệnh Python ex01.py với lệnh sau:

$ python ex01.py

Như bạn có thể thấy, trình duyệt web tìm, chọn và nhấn chìa khóa trên Bạn đã quên tài khoản? Liên kết.

Các Bạn đã quên tài khoản? Liên kết đưa trình duyệt đến trang sau.

Theo cách tương tự, bạn có thể dễ dàng tìm kiếm các phần tử có giá trị thuộc tính mong muốn của bạn.

Đây, Đăng nhập nút là một đầu vào phần tử có giá trị thuộc tính Đăng nhập . Hãy xem cách chọn phần tử này theo văn bản.

Tạo một tập lệnh Python mới ex02.py và nhập các dòng mã sau vào đó.

từselennhập khẩuwebdriver
từselen.webdriver.chung.chìa khóa nhập khẩuChìa khóa
từselen.webdriver.chung.qua nhập khẩuQua
từ thời gian nhập khẩungủ
trình duyệt=webdriver.Trình duyệt Chrome(thực thi_path='./drivers/chromedriver')
trình duyệt.hiểu được('https://www.facebook.com/')
ngủ(5)
emailInput=trình duyệt.find_element(Qua.XPATH, '// input [@ id =' email ']')
passwordInput=trình duyệt.find_element(Qua.XPATH, '// đầu vào [@ id =' pass ']')
loginButton=trình duyệt.find_element(Qua.XPATH, '// * [@ value =' Đăng nhập ']')
emailInput.send_keys('[email được bảo vệ]')
ngủ(5)
passwordInput.send_keys('pass-pass bí mật')
ngủ(5)
loginButton.send_keys(Chìa khóa.ĐI VÀO)

Khi bạn đã hoàn tất, hãy lưu ex02.py Tập lệnh Python.

Dòng 1-4 nhập tất cả các thành phần được yêu cầu.

Dòng 6 tạo Chrome trình duyệt đối tượng sử dụng người đánh bóng nhị phân từ trình điều khiển / thư mục của dự án.

Dòng 8 cho trình duyệt tải trang web facebook.com.

Mọi thứ diễn ra quá nhanh khi bạn chạy script. Vì vậy, tôi đã sử dụng ngủ() hoạt động nhiều lần trong ex02.py để trì hoãn các lệnh của trình duyệt. Bằng cách này, bạn có thể quan sát mọi thứ hoạt động như thế nào.

Dòng 11 tìm hộp văn bản đầu vào email và lưu trữ một tham chiếu của phần tử trong emailInput Biến đổi.

Dòng 12 tìm hộp văn bản đầu vào email và lưu trữ một tham chiếu của phần tử trong emailInput Biến đổi.

Dòng 13 tìm phần tử đầu vào có thuộc tính giá trị của Đăng nhập bằng cách sử dụng bộ chọn XPath. Đối với điều đó, tôi đã sử dụng bộ chọn XPath // * [@ value = ’Đăng nhập’] .

Bộ chọn XPath bắt đầu bằng // . Nó có nghĩa là phần tử có thể ở bất kỳ đâu trên trang. Các * biểu tượng cho Selenium biết để chọn bất kỳ thẻ nào ( đầu vào hoặc P hoặc nhịp, v.v.) phù hợp với điều kiện bên trong dấu ngoặc vuông [] . Ở đây, điều kiện là, thuộc tính phần tử giá trị bằng Đăng nhập .

Dòng 15 gửi đầu vào[email được bảo vệ]vào hộp văn bản nhập email và dòng 16 trì hoãn thao tác tiếp theo.

Dòng 18 gửi mật khẩu đầu vào đến hộp văn bản nhập mật khẩu và dòng 19 trì hoãn thao tác tiếp theo.

Dòng 21 gửi nhấn phím đến nút đăng nhập.

Chạy ex02.py Tập lệnh Python với lệnh sau:

$ python3 ex02.py

Như bạn có thể thấy, hộp văn bản email và mật khẩu chứa đầy các giá trị giả của chúng tôi và Đăng nhập nút được nhấn.

Sau đó, trang điều hướng đến trang sau.

Tìm các phần tử theo một phần văn bản:

Trong phần trước, tôi đã hướng dẫn bạn cách tìm các phần tử theo văn bản cụ thể. Trong phần này, tôi sẽ chỉ cho bạn cách tìm các phần tử từ các trang web bằng cách sử dụng một phần văn bản.

Trong ví dụ, ex01.py , Tôi đã tìm kiếm phần tử liên kết có văn bản Bạn đã quên tài khoản? . Bạn có thể tìm kiếm cùng một phần tử liên kết bằng cách sử dụng một phần văn bản, chẳng hạn như Quên tài khoản . Để làm điều đó, bạn có thể sử dụng chứa đựng() Hàm XPath, như được hiển thị trong dòng 10 của ex03.py . Các mã còn lại giống như trong ex01.py . Kết quả sẽ giống nhau.

Trong dòng 10 của ex03.py , điều kiện lựa chọn đã sử dụng chứa (nguồn, văn bản) Hàm XPath. Hàm này có 2 đối số, nguồn,chữ .

Các chứa đựng() chức năng kiểm tra xem chữ được đưa ra trong đối số thứ hai khớp một phần với nguồn giá trị trong đối số đầu tiên.

Nguồn có thể là văn bản của phần tử ( chữ() ) hoặc giá trị thuộc tính của phần tử ( @attr_name ).

Trong ex03.py , văn bản của phần tử được kiểm tra.

Một chức năng XPath hữu ích khác để tìm các phần tử từ trang web bằng cách sử dụng một phần văn bản là bắt đầu với (nguồn, văn bản) . Hàm này có các đối số giống như chứa đựng() chức năng và được sử dụng theo cùng một cách. Sự khác biệt duy nhất là bắt đầu với() hàm kiểm tra xem đối số thứ hai chữ là chuỗi bắt đầu của đối số đầu tiên nguồn .

Tôi đã viết lại ví dụ ex03.py để tìm kiếm phần tử mà văn bản bắt đầu bằng Đã quên, như bạn có thể thấy ở dòng 10 của ex04.py . Kết quả giống như trong ex02ex03.py .

Tôi cũng đã viết lại ex02.py để nó tìm kiếm phần tử đầu vào mà giá trị thuộc tính bắt đầu bằng Nhật ký, như bạn có thể thấy ở dòng 13 của ex05.py . Kết quả giống như trong ex02.py .

Phần kết luận:

Trong bài viết này, chúng tôi đã giới thiệu cho các bạn cách tìm và chọn các phần tử từ các trang web bằng văn bản với thư viện Selenium Python. Bây giờ, bạn sẽ có thể tìm thấy các phần tử từ các trang web theo văn bản cụ thể hoặc một phần văn bản với thư viện Selenium Python.