天天看點

selenium元素定位與操作

作者:測試者穆勒
說明:本篇部落格基于selenium 4.1.0

更多技術文章:Redirecting...

在selenium中,想要對元素進行操作,一般需要如下步驟:

  1. 在浏覽器中檢視元素屬性,便于selenium在頁面中找到該元素
  2. 在代碼中建立元素對象
  3. 元素操作、擷取元素資訊

檢視元素屬性

浏覽器中進入開發者模式

方法1:右鍵-檢查

方法2:設定-更多工具-開發者模式

方法3:預設快捷鍵F12

出現該頁面則進入了浏覽器開發者模式,可檢視網頁結構

selenium元素定位與操作

找到目标元素的代碼

方法1:在目标元素上右鍵-檢查

方法2:使用選擇器,選擇到目标元素

selenium元素定位與操作

建立元素對象

selenium一共提供了八種定位方式,通過這些定位方式即可建立元素對象。分别為:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()


element_id = driver.find_element(By.ID, 'id屬性值')                              # id定位
element_name = driver.find_element(By.NAME, 'name屬性值')                        # name定位
element_class = driver.find_element(By.CLASS_NAME, 'class屬性值')                # class定位
element_tag = driver.find_element(By.TAG_NAME, 'html标簽名稱')                   # tag定位
element_linktext = driver.find_element(By.LINK_TEXT, '文本資訊')                 # 文本定位:僅可用于<a>标簽
element_partiallinktext = driver.find_element(By.PARTIAL_LINK_TEXT, '文本資訊')  # 文本模糊定位:僅可用于<a>标簽
element_css = driver.find_element(By.CSS_SELECTOR, 'css表達式')                  # css定位
element_xpath = driver.find_element(By.XPATH, 'xpath表達式')                     # xpath定位
           

元素操作

備注:element代指元素對象

element.click()                         # 點選
element.send_keys("helloworld")         # 輸入
element.clear()                         # 清空
element.submit()                        # 送出表單
           

查找元素子節點

以目前element為父節點,查找該元素中的子節點。子節點同樣支援selenium的八種定位方式

以百度的"百度一下"為例,我們可以先找到其父節點再找到"百度一下":

element = driver.find_element(By.CSS_SELECTOR, ".s_btn_wr").find_element(By.TAG_NAME, 'input')
           

擷取屬性

element.tag_name                 # 擷取标簽名稱
element.text                     # 擷取文本
element.get_attribute('class')   # 擷取屬性
element.id                       # 擷取selenium内部元素編号
element.size                     # 擷取大小,傳回值:{"height": xx,"width": xx}
element.location                 # 擷取坐标,傳回值:{"x": xx),"y": xx}
           

元素狀态

傳回值:布爾值

element.is_selected()            # 元素是否被選中
element.is_enabled()             # 元素是否可操作
element.is_displayed()           # 元素是否可見
           

備注:元素是否可見,指元素是否出現在網頁中,無論元素在不在浏覽器的可視視窗内

截圖

element.screenshot('study_selenium/resource/element_shot.png')  # 截屏并儲存到檔案中
photo = element.screenshot_as_png               

更多技術文章:Redirecting...

繼續閱讀