簡介
CSS選擇器是一種用于選擇HTML元素的模式。它允許我們根據(jù)元素的標(biāo)簽名、類名、ID、屬性等屬性進(jìn)行選擇。CSS選擇器的語法簡單而靈活,是前端開發(fā)中常用的定位元素的方式。
selenium中的css定位,實際是通過css選擇器來定位到具體元素,css選擇器來自于css語法。CSS定位有以下顯著優(yōu)點:
- 語法簡潔
- 對比其他定位方式,定位效率更快
- 對比其他定位方式,定位更穩(wěn)定
css選擇器語法
基礎(chǔ)選擇器
選擇器 | 格式 | 示例 | 示例說明 |
---|---|---|---|
選擇全部 | * | * | 選擇全部元素 |
標(biāo)簽選擇器 | html標(biāo)簽 | p | 選擇所有<p>元素 |
ID選擇器 | #id屬性值 | #su | 選擇所有id='su’的元素 |
類選擇器 | .class屬性值 | .s_btn | 選擇所有class='s_btn’的元素 |
屬性選擇器1 | [屬性名] | [type] | 選擇所有帶type屬性的元素 |
屬性選擇器2 | [屬性名=‘屬性值’] | [type=“submit”] | 選擇所有type="submit"的元素 |
屬性選擇器3 | [屬性名~=‘屬性值’] | [type~=“submit”] | 選擇所有type包含"submit"的元素 |
屬性選擇器4 | [屬性名|=‘屬性值’] | [type|=“submit”] | 選擇所有type以"submit"開頭的元素 |
備注:某些元素屬性有多個值(如class屬性),值表現(xiàn)為以空格隔開,使用時需要單個取出使用
組合選擇器
組合選擇器就是同時使用多個基礎(chǔ)選擇器,從而更好地篩選出目標(biāo)元素
選擇器 | 格式 | 示例 | 示例說明 |
---|---|---|---|
標(biāo)簽指定屬性 | 標(biāo)簽加屬性描述 | input#su | 選擇所有id='su’的<input>元素 |
并集 | 元素1,元素2 | div,p | 選擇所有<div>和<p>元素 |
父子 | 元素1>元素2 | div>p | 選擇所有父級是<div>的<p>元素 |
后代 | 元素1 元素2 | div p | 選擇<div>中的所有<p>元素 |
相鄰 | 元素1+元素2 | div+p | 選擇<div>同級后的相鄰<p>元素 |
同級 | 元素1~元素2 | div~p | 選擇<div>同級后的所有<p>元素 |
偽屬性選擇器
偽屬性選擇器是指元素在html中實際并不存在該屬性,是由css定義的拓展描述屬性
選擇器 | 格式 | 示例 | 示例說明 |
---|---|---|---|
唯一子元素 | :only-child | p:only-child | 選擇所有<p>元素且該元素是其父級的唯一一個元素 |
第一子元素 | :first-child | p:first-child | 選擇所有<p>元素且該元素是其父級的第一個元素 |
最后子元素 | :last-child | p:last-child | 選擇所有<p>元素且該元素是其父級的最后一個子元素 |
順序選擇器 | :nth-child(n) | p:nth-child(2) | 選擇所有<p>元素且該元素是其父級的第二個子元素 |
順序類型選擇器 | :nth-of-type(n) | p:nth-of-type(2) | 選擇所有<p>元素且該元素是其父級的第二個<p>元素 |
倒序選擇器 | :nth-last-child(n) | p:nth-last-child(2) | 選擇所有<p>元素且該元素是其父級的倒數(shù)第二個子元素 |
倒序類型選擇器 | :nth-last-of-type(n) | p:nth-last-of-type(2) | 選擇所有<p>元素且該元素是其父級的倒數(shù)第二個<p>元素 |
使用示例
- 通過
id
選擇器查找
通過css定位的id
屬性查找百度首頁的輸入框元素,代碼如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #打開網(wǎng)頁
driver.maximize_window()
element = driver.find_element(By.CSS_SELECTOR, '#kw')
print(element)
- 通過
class
選擇器查找
通過元素的.class
屬性值查找元素,我們還是以百度首頁的輸入框為例,代碼如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #打開網(wǎng)頁
driver.maximize_window()
element = driver.find_element(By.CSS_SELECTOR, '.s_ipt')
print(element)
- 通過標(biāo)簽定位
我們繼續(xù)使用百度首頁輸入框為例,輸入框一般有input
標(biāo)簽,代碼如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #打開網(wǎng)頁
driver.maximize_window()
element = driver.find_element(By.CSS_SELECTOR, 'input')
print(element)
- 層級選擇器
根據(jù)元素的父子關(guān)系來選擇,實例:直接子元素層級關(guān)系,使用>
號,繼續(xù)以百度首頁的搜索框為例,代碼如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #打開網(wǎng)頁
driver.maximize_window()
element = driver.find_element(By.CSS_SELECTOR, '.bg.s_ipt_wr > input')
print(element)
注:如果兩個元素之間不是直接的子元素關(guān)系,我們需要使用空格隔開,當(dāng)有多級的層級關(guān)系時,我們可以使用duoge>
符號,示例如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #打開網(wǎng)頁
driver.maximize_window()
element = driver.find_element(By.CSS_SELECTOR, 'form input')
print(element)
------------------------------------
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #打開網(wǎng)頁
driver.maximize_window()
element = driver.find_element(By.CSS_SELECTOR, 'form > span > input')
print(element)
總結(jié)
CSS定位是非常高效的一種定位方式,代碼也非常簡潔,相對于xpath定位方法來說,它的定位速度快,在能夠使用CSS定位的情況下,推薦使用CSS定位來實現(xiàn)元素的定位。希望本文能夠幫到大家!
獲取更多技術(shù)資料,請點擊!文章來源:http://www.zghlxwxcb.cn/news/detail-797467.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-797467.html
到了這里,關(guān)于軟件測試/測試開發(fā)/全日制|Python selenium CSS定位方法詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!