Selenium八大元素定位

一、Selenium八大元素定位新方法

儘管Selenium定位元素的八大方法已經較為完善,但是每種定位方式都有其優缺點,使用時需要根據實際情況選擇。同時,Selenium也經常會推出新的元素定位方法,如Selenium 4.0中新增了Relative定位方法。

from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select

# Relative定位方法
article = driver.find_element(By.CSS_SELECTOR, 'article:nth-child(1)')
title = article.find_element(By.CSS_SELECTOR, 'h2')

二、Selenium元素定位方法

Selenium提供了八種元素定位方法,它們分別是:

  • ID
  • Name
  • Class Name
  • Tag Name
  • Link Text
  • Partial Link Text
  • XPath
  • CSS Selector
# 以ID定位為例
from selenium.webdriver.common.by import By
element = driver.find_element(By.ID, 'element-id') 

三、Selenium八大定位方法

下面,我們將會對Selenium八大定位方法逐一進行介紹:

  • 1. ID定位
  • ID定位是一種最基本的定位方法,通過元素ID查找元素。

    from selenium.webdriver.common.by import By
      element = driver.find_element(By.ID, 'element-id')
  • 2. Name定位
  • Name定位是通過元素名稱查找元素。

    from selenium.webdriver.common.by import By
      element = driver.find_element(By.NAME, 'element-name')
  • 3. Class Name定位
  • Class Name定位是通過元素class屬性查找元素。

    from selenium.webdriver.common.by import By
      elements = driver.find_elements(By.CLASS_NAME, 'element-class')
  • 4. Tag Name定位
  • Tag Name定位是通過HTML標籤名查找元素,可以查找到同類元素的集合。

    from selenium.webdriver.common.by import By
      elements = driver.find_elements(By.TAG_NAME, 'element-tag')
  • 5. Link Text定位
  • Link Text定位是通過鏈接文本查找鏈接元素。

    from selenium.webdriver.common.by import By
      element = driver.find_element(By.LINK_TEXT, 'element-link-text')
  • 6. Partial Link Text定位
  • Partial Link Text定位是通過鏈接部分文本查找鏈接元素。

    from selenium.webdriver.common.by import By
      element = driver.find_element(By.PARTIAL_LINK_TEXT, 'partial-link-text')
  • 7. XPath定位
  • XPath定位是通過XPath表達式查找元素,XPath是一種XML路徑語言。

    from selenium.webdriver.common.by import By
      element = driver.find_element(By.XPATH, 'element-xpath')
  • 8. CSS Selector定位
  • CSS Selector定位是通過CSS選擇器查找元素。

    from selenium.webdriver.common.by import By
      element = driver.find_element(By.CSS_SELECTOR, 'element-css-selector')

四、Selenium定位隱藏元素

有些網頁中的元素可能被隱藏或者用了一些特殊的樣式,可以使用JavaScript或者CSS樣式覆蓋來使其顯示出來,例如:

element = driver.execute_script("return document.querySelector('#id').innerHTML")

五、Selenium元素定位有哪些

使用Selenium可以定位到以下類型的元素:

  • 文本框/輸入框
  • 按鈕
  • 單選框/多選框
  • 下拉框
  • 超鏈接
  • 圖片
  • 表格
  • iframe/frameset

六、Selenium動態元素定位方法

如果頁面中的元素是動態的,即其位置或者屬性值不斷變化,可以使用Selenium動態元素定位方法,如:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'element-id'))) 

七、Selenium定位元素的方法

以下是一些常用的Selenium定位元素的方法:

  • 1. find_element():查找單個元素
  • element = driver.find_element(By.ID, 'element-id')
  • 2. find_elements():查找多個同類型元素
  • elements = driver.find_elements(By.TAG_NAME, 'element-tag')
  • 3. find_element_by_xpath():通過XPath表達式查找元素
  • element = driver.find_element_by_xpath('element-xpath')
  • 4. find_element_by_css_selector():通過CSS選擇器查找元素
  • element = driver.find_element_by_css_selector('element-css-selector')
  • 5. wait_until():等待元素出現
  • from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as EC
      from selenium.webdriver.common.by import By
      
      element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'element-id'))) 
  • 6. move_to_element():滑鼠懸停在元素上
  • from selenium.webdriver.common.action_chains import ActionChains
    
      element = driver.find_element(By.ID, 'element-id')
      ActionChains(driver).move_to_element(element).perform()
  • 7. send_keys():輸入文字
  • element = driver.find_element(By.ID, 'element-id')
      element.send_keys('input-text')
  • 8. click():滑鼠單擊操作
  • element = driver.find_element(By.ID, 'element-id')
      element.click()

八、不屬於Selenium八大定位方式

以下是一些不屬於Selenium八大定位方式的方式:

  • 1. By.JS定位
  • 使用JavaScript代碼定位元素。

    element = driver.execute_script("return document.querySelector('#id')")
  • 2. By.LINK_TEXT_PARTIAL匹配定位
  • 使用Link Text字元串的部分文本進行匹配定位。

    elements = driver.find_elements(By.XPATH, "//*[contains(text(),'partial-link-text')]")
  • 3. By.XPATH子元素定位
  • 通過父節點和子節點的關係查找元素。

    element = driver.find_element(By.XPATH, '//form/div/input')

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/238901.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:13
下一篇 2024-12-12 12:13

相關推薦

  • Python遍歷集合中的元素

    本文將從多個方面詳細闡述Python遍歷集合中的元素方法。 一、for循環遍歷集合 Python中,使用for循環可以遍歷集合中的每個元素,代碼如下: my_set = {1, 2…

    編程 2025-04-29
  • Python列表中大於某數的元素處理方法

    本文將會介紹如何在Python列表中找到大於某數的元素,並對其進行進一步的處理。 一、查找大於某數的元素 要查找Python列表中大於某數的元素,可以使用列表推導式進行處理。 nu…

    編程 2025-04-29
  • 使用Selenium爬蟲實現數據採集

    本文將詳細闡述如何使用Selenium爬蟲實現數據採集,包括Selenium的基本用法,Selenium + Beautiful Soup庫的用法以及常見問題的解決方案。如果您是初…

    編程 2025-04-29
  • Python Set元素用法介紹

    Set是Python編程語言中擁有一系列獨特屬性及特點的數據類型之一。它可以存儲無序且唯一的數據元素,這使得Set在數據處理中非常有用。Set能夠進行交、並、差集等操作,也可以用於…

    編程 2025-04-29
  • Python編程實現列表元素逆序存放

    本文將從以下幾個方面對Python編程實現列表元素逆序存放做詳細闡述: 一、實現思路 一般來說,使用Python將列表元素逆序存放可以通過以下幾個步驟實現: 1. 定義一個列表 2…

    編程 2025-04-29
  • Python集合加入元素

    Python中的集合是一種無序且元素唯一的集合類型。集合中的元素可以是數字、字元串、甚至是其他集合類型。在本文中,我們將從多個方面來探討如何向Python集合中加入元素。 一、使用…

    編程 2025-04-29
  • Java創建一個有10萬個元素的數組

    本文將從以下方面對Java創建一個有10萬個元素的數組進行詳細闡述: 一、基本介紹 Java是一種面向對象的編程語言,其強大的數組功能可以支持創建大規模的多維數組以及各種複雜的數據…

    編程 2025-04-28
  • 如何在谷歌中定位系統彈框元素

    本文將從以下幾個方面為大家介紹如何在谷歌中準確地定位系統彈框元素。 一、利用開發者工具 在使用谷歌瀏覽器時,我們可以通過它自帶的開發者工具來定位系統彈框元素。 首先,我們可以按下F…

    編程 2025-04-28
  • Python三種基本輸入元素

    本文將從多個方面對於Python三種基本輸入元素進行詳細的闡述並給出代碼示例。 一、Python三種基本輸入元素解答 Python三種基本輸入元素包括命令行參數、標準輸入和文件輸入…

    編程 2025-04-28
  • Python元組元素分成單個整數

    本文將介紹如何將Python元組中的元素分成單個整數,並提供多種實現方式。 一、使用for循環遍曆元組實現 可以通過for循環遍曆元組的每一個元素,再將其轉換成整數,並存儲在新的列…

    編程 2025-04-28

發表回復

登錄後才能評論