selenium css定位方法
阿新 • • 發佈:2021-12-16
這一篇介紹一些Css,Css相比與XPath來說,更加複雜點,但是Css定位速度比XPath方法要快,書寫更加簡單。
Css
層疊樣式表(英文全稱:Cascading Style Sheets)是一種用來表現HTML(標準通用標記語言的一個應用)或XML(標準通用標記語言的一個子集)等檔案樣式的計算機語言。CSS不僅可以靜態地修飾網頁,還可以配合各種指令碼語言動態地對網頁各元素進行格式化。CSS選擇器可以較為靈活地選擇控制元件的任意屬性,一般情況下,CSS定位速度比XPath定位速度快。
Css學習文件:https://www.w3school.com.cn/cssref/css_selectors.asp
Css選擇器常用語法
選擇器 | 例子 | 例子描述 |
---|---|---|
.class | .intro | 選擇 class="intro" 的所有元素。 |
#id | #firstname | 選擇 id="firstname" 的所有元素。 |
* | * | 選擇所有元素。 |
element | p | 選擇所有 <p> 元素。 |
element,element | div,p | 選擇所有 <div> 元素和所有 <p> 元素。 |
elementelement | div p | 選擇 <div> 元素內部的所有 <p> 元素。 |
element>element | div>p | 選擇父元素為 <div> 元素的所有 <p> 元素。 |
element+element | div+p | 選擇緊接在 <div> 元素之後的所有 <p> 元素。 |
[attribute] | [target] | 選擇帶有 target 屬性所有元素。 |
[attribute=value] | [target=_blank] | 選擇 target="_blank" 的所有元素。 |
[attribute~=value] | [title~=flower] | 選擇 title 屬性包含單詞 "flower" 的所有元素。 |
[attribute|=value] | [lang|=en] | 選擇 lang 屬性值以 "en" 開頭的所有元素。 |
Css例項定位
1、通過Class定位
Class定位通過.來進行表示
# coding:utf-8 from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 通過Css中的class定位 driver.find_element_by_css_selector('.s_ipt').send_keys('部落格園')
2、通過id定位
Id定位通過#來表示
# coding:utf-8 from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 通過id定位,id通過#表示 driver.find_element_by_css_selector('#kw').send_keys('部落格園')
3、通過標籤名
Css中可以直接通過標籤名進行匹配
# coding:utf-8 from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 通過標籤名定位 driver.find_element_by_css_selector('input')
4、通過屬性來定位
# coding:utf-8 from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 通過屬性定位 driver.find_element_by_css_selector('[autocomplete="off"]').send_keys('部落格園') # 通過name屬性定位 # driver.find_element_by_css_selector('[name="wd"]').send_keys('部落格園')
5、通過組合形式進行定位
通過父級或者爺爺級別進行定位
# coding:utf-8 from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 通過父級組合形式 driver.find_element_by_css_selector('span > input#kw').send_keys('部落格園')
# 通過元素形式
# driver.find_element_by_css_selector('input#kw').send)keys('部落格園')
6、通過包含元素內容定位
這裡比如class中以s_ipt開頭的
# coding:utf-8 from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 檢視已元素內容開頭 driver.find_element_by_css_selector("[class^='s_ipt']").send_keys('部落格園')
7、 通過以元素結尾內容定位
# coding:utf-8 from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 檢視kw元素結尾定位 driver.find_element_by_css_selector("[id$='kw']").send_keys('部落格園')
原文連結:
https://www.cnblogs.com/qican/p/13202501.html