Hướng dẫn find element by value selenium python - tìm phần tử theo giá trị trăn selen

Tôi đang sử dụng selenium với Python để tự động trích xuất một số dữ liệu từ các nhà máy điện của chúng tôi và ngay bây giờ tôi cần nhấp vào một yếu tố. Vấn đề là

ID = "id"
NAME = "name"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
1 của phần tử và thay đổi đơn hàng cho mỗi nhà máy chúng tôi đang theo dõi. Thông tin tĩnh duy nhất là
ID = "id"
NAME = "name"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
2, giống như trong dòng thứ 3
ID = "id"
NAME = "name"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
3.

Tôi đã thử nhiều cách tiếp cận và tôi không thể tìm thấy một giải pháp. Tôi không thể sử dụng chỉ mục hoặc trẻ em vì thứ tự của các tham số đang thay đổi. Tôi đã thử bộ chọn CSS mà không thành công.

Ở đây bạn nhận được một số nỗ lực của tôi ...

driver.find_element_by_xpath("//input[@value='T_U0']").click()
driver.find_element_by_css_selector("input[@data-id-sys-abbreviation='388']").click()

Tôi đã thử nhiều thứ khác nhưng tôi chỉ cố gắng một cách tuyệt vọng.

Những gì tôi thực sự cần là

ID = "id"
NAME = "name"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
4, nếu có cách làm điều đó, xin vui lòng cho tôi biết, nếu không vui lòng chỉ cho tôi cách tôi có thể làm điều đó.

Tôi cần nhấp vào một số tùy chọn thay đổi đơn đặt hàng cho nhà máy

Text ()-Đây là một phương thức tích hợp trong selen được sử dụng với XPath để định vị một phần tử dựa trên giá trị văn bản chính xác của nó. ....

  • find_element

chứa ()-tương tự như phương thức văn bản (), chứa () là một phương thức tích hợp khác được sử dụng với XPath ..

  • find_elements

Có nhiều chiến lược khác nhau để xác định vị trí các yếu tố trong một trang. Bạn có thể sử dụng cái thích hợp nhất cho trường hợp của bạn. Selenium cung cấp phương pháp sau để định vị các phần tử trong một trang:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')

Để tìm nhiều phần tử (các phương thức này sẽ trả về danh sách):

ID = "id"
NAME = "name"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

Ví dụ sử dụng:

find_element(By.ID, "id")
find_element(By.NAME, "name")
find_element(By.XPATH, "xpath")
find_element(By.LINK_TEXT, "link text")
find_element(By.PARTIAL_LINK_TEXT, "partial link text")
find_element(By.TAG_NAME, "tag name")
find_element(By.CLASS_NAME, "class name")
find_element(By.CSS_SELECTOR, "css selector")

Các thuộc tính có sẵn cho theo lớp được sử dụng để định vị các thành phần trên một trang. Đây là các thuộc tính có sẵn cho lớp học:

Lớp ‘BY được sử dụng để chỉ định thuộc tính nào được sử dụng để định vị các phần tử trên một trang. Đây là những cách khác nhau, các thuộc tính được sử dụng để định vị các phần tử trên một trang:

Nếu bạn muốn định vị một số phần tử có cùng thuộc tính, hãy thay thế Find_element bằng Find_elements.

Chẳng hạn, hãy xem xét nguồn trang này:

<html>
 <body>
  <form id="loginForm">
   <input name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
  form>
 body>
html>

4.1. Định vị bởi id¶

login_form = driver.find_element(By.ID, 'loginForm')

Phần tử biểu mẫu có thể được định vị như thế này:

Chẳng hạn, hãy xem xét nguồn trang này:

<html>
 <body>
  <form id="loginForm">
   <input name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
   <input name="continue" type="button" value="Clear" />
  form>
body>
html>

4.2. Định vị theo tên thánh

username = driver.find_element(By.NAME, 'username')
password = driver.find_element(By.NAME, 'password')

Sử dụng điều này khi bạn biết thuộc tính tên của một phần tử. Với chiến lược này, phần tử đầu tiên với thuộc tính tên phù hợp sẽ được trả về. Nếu không có phần tử nào có thuộc tính tên phù hợp,

ID = "id"
NAME = "name"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
5 sẽ được nêu ra.

continue = driver.find_element(By.NAME, 'continue')

Các phần tử tên người dùng và mật khẩu có thể được định vị như thế này:

Điều này sẽ cung cấp cho nút Đăng nhập của Nhật Bản khi nó xảy ra trước nút Xóa Clear Clear:

4.3. Định vị bởi xpath¶

XPath là ngôn ngữ được sử dụng để định vị các nút trong tài liệu XML. Vì HTML có thể là việc triển khai XML (XHTML), người dùng Selenium có thể tận dụng ngôn ngữ mạnh mẽ này để nhắm mục tiêu các yếu tố trong các ứng dụng web của họ. XPath hỗ trợ các phương thức định vị đơn giản bằng các thuộc tính ID hoặc tên và mở rộng chúng bằng cách mở tất cả các loại khả năng mới như định vị hộp kiểm thứ ba trên trang.

Chẳng hạn, hãy xem xét nguồn trang này:

<html>
 <body>
  <form id="loginForm">
   <input name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
   <input name="continue" type="button" value="Clear" />
  form>
body>
html>

Các yếu tố hình thức có thể được định vị như thế này:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
0

  1. Đường dẫn tuyệt đối (sẽ bị hỏng nếu HTML chỉ được thay đổi một chút)
  2. Phần tử biểu mẫu đầu tiên trong HTML
  3. Phần tử biểu mẫu với ID thuộc tính được đặt thành Loginform

Phần tử tên người dùng có thể được định vị như thế này:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
1

  1. Phần tử biểu mẫu đầu tiên với phần tử con đầu vào có tên được đặt thành tên người dùng
  2. Đầu tiên đầu vào phần tử con của phần tử biểu mẫu với ID thuộc tính được đặt thành LoginForm
  3. Phần tử đầu vào đầu tiên có tên thuộc tính được đặt thành tên người dùng

Phần tử nút rõ ràng trên mạng có thể được định vị như thế này:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
2

  1. Đầu vào với tên thuộc tính được đặt để tiếp tục và loại thuộc tính được đặt thành nút
  2. Phần tử con đầu vào thứ tư của phần tử biểu mẫu với ID thuộc tính được đặt thành LoginForm

Những ví dụ này bao gồm một số điều cơ bản, nhưng để tìm hiểu thêm, các tài liệu tham khảo sau đây được khuyến nghị:

  • Hướng dẫn W3Schools XPath
  • Khuyến nghị W3C XPath
  • Hướng dẫn XPath - với các ví dụ tương tác.

Dưới đây là một vài tiện ích bổ sung rất hữu ích có thể hỗ trợ khám phá XPath của một yếu tố:

  • Xpath Finder - Plugin để có các phần tử XPath.
  • Người trợ giúp Xpath - Dành cho Google Chrome

4.4. Định vị các siêu liên kết bằng văn bản liên kết

Sử dụng điều này khi bạn biết văn bản liên kết được sử dụng trong thẻ neo. Với chiến lược này, phần tử đầu tiên với văn bản liên kết khớp với giá trị được cung cấp sẽ được trả về. Nếu không có phần tử nào có thuộc tính văn bản liên kết phù hợp,

ID = "id"
NAME = "name"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
5 sẽ được nâng lên.

Chẳng hạn, hãy xem xét nguồn trang này:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
3

Liên kết tiếp tục.html có thể được định vị như thế này:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
4

4.5. Định vị các yếu tố theo tên thẻ

Sử dụng điều này khi bạn muốn định vị một phần tử bằng tên thẻ. Với chiến lược này, phần tử đầu tiên với tên thẻ đã cho sẽ được trả về. Nếu không có phần tử nào có tên thẻ phù hợp,

ID = "id"
NAME = "name"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
5 sẽ được nêu ra.

Chẳng hạn, hãy xem xét nguồn trang này:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
5

Phần tử tiêu đề (H2) có thể được định vị như thế này:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
6

4.6. Định vị các yếu tố theo tên lớp

Sử dụng điều này khi bạn muốn định vị một phần tử theo tên lớp. Với chiến lược này, phần tử đầu tiên với thuộc tính tên lớp phù hợp sẽ được trả về. Nếu không có phần tử nào có thuộc tính tên lớp phù hợp,

ID = "id"
NAME = "name"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
5 sẽ được nâng lên.

Chẳng hạn, hãy xem xét nguồn trang này:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
7

Phần tử P Pi có thể được định vị như thế này:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
8

4.7. Định vị các yếu tố của CSS Selectors¶

Sử dụng điều này khi bạn muốn định vị một phần tử bằng cú pháp chọn CSS. Với chiến lược này, phần tử đầu tiên phù hợp với bộ chọn CSS đã cho sẽ được trả về. Nếu không có phần tử nào khớp với bộ chọn CSS được cung cấp, sẽ được nâng lên

ID = "id"
NAME = "name"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
5.

Chẳng hạn, hãy xem xét nguồn trang này:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
7

Phần tử P Pi có thể được định vị như thế này:

ID = "id"
NAME = "name"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
0

4.7. Định vị các yếu tố của CSS Selectors¶

Làm cách nào để tìm một yếu tố chứa văn bản cụ thể trong Selenium WebDriver Python)?

Chúng ta có thể tìm thấy một yếu tố chứa văn bản cụ thể với selenium webdriver trong Python bằng cách sử dụng XPath. Trình định vị này có các chức năng giúp xác minh một văn bản cụ thể có trong một phần tử. Text Function () trong XPath được sử dụng để xác định vị trí WebEuity tùy thuộc vào văn bản có thể nhìn thấy trên trang.using the xpath. This locator has functions that help to verify a specific text contained within an element. The function text() in xpath is used to locate a webelement depending on the text visible on the page.

Làm cách nào để tìm một nguyên tố sử dụng selen?

Tìm các yếu tố trong Selenium WebDriver: Chiến lược/ loại định vị định vị..
ClassName..
TagName..
Liên kết văn bản/văn bản liên kết một phần ..
Bộ chọn CSS ..
Bộ chọn XPath ..

Làm thế nào để bạn tìm thấy giá trị của một phần tử trong Python?

Để tìm một phần tử trong danh sách, hãy sử dụng phương thức Python Danh sách (), chỉ mục () là phương thức Python sẵn có tìm kiếm một mục trong danh sách và trả về chỉ mục của nó.Phương thức Index () tìm thấy phần tử đã cho trong danh sách và trả về vị trí của nó.use the Python list index() method, The index() is an inbuilt Python method that searches for an item in the list and returns its index. The index() method finds the given element in the list and returns its position.

Làm thế nào để bạn định vị các phần tử dựa trên văn bản trong XPath?

Phần tử tìm thấy bằng văn bản trong selenium là gì ?..
Text ()-Đây là một phương thức tích hợp trong selen được sử dụng với XPath để định vị một phần tử dựa trên giá trị văn bản chính xác của nó.....
chứa ()-tương tự như phương thức văn bản (), chứa () là một phương thức tích hợp khác được sử dụng với XPath ..