參考:http://www.python3.vip/tut/auto/selenium/css_1/
1、css selector選擇的使用

藍色框里面用css 樣式,指定了class 值為animal的元素,要顯示為紅色。
其中 藍色框里面的 .animal 就是 CSS Selector ,或者說 CSS 選擇器。
CSS Selector 語法就是用來選擇元素的。
既然 CSS Selector 語法 天生就是瀏覽器用來選擇元素的,selenium自然就可以使用它用在自動化中,去選擇要操作的元素了。
只要 CSS Selector 的語法是正確的, Selenium 就可以選擇到該元素。
CSS Selector 非常強大,學習Selenium Web自動化一定要學習CSS Selector
find_element_by_css_selector(CSS Selector參數)
find_elements_by_css_selector(CSS Selector參數)
find_elements_by_css_selector('.animal') --返回的就是class屬性為animal的所有元素。
2、根據tag、ID、class屬性選擇的css selector用法
CSS Selector參數 可以是ID、tag、class等屬性。
根據 tag名 選擇元素的 CSS Selector 語法非常簡單,直接寫上tag名即可:
elements = wd.find_elements_by_css_selector('div') 等價於 elements = wd.find_elements_by_tag_name('div')
根據id屬性 選擇元素的語法是在id號前面加上一個井號: #id值
比如,我們想在 id 為 searchtext 的輸入框中輸入文本 你好 ,
from selenium import webdriver
wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe')
wd.get('http://cdn1.python3.vip/files/selenium/sample1.html')
element = wd.find_element_by_css_selector('#searchtext')
element.send_keys('你好')
根據class屬性 選擇元素的語法是在 class 值 前面加上一個點: .class值
elements = wd.find_elements_by_css_selector('.animal') 等價於 elements = wd.find_elements_by_class_name('animal')
--------------------------------------------------------------------------------------------------------------------
3、直接子元素和后代元素的限定表示方法
直接連接包含的,稱為直接子元素;中間隔了幾層的,統稱為后代元素。
如果 元素2 是 元素1 的 直接子元素, CSS Selector 選擇子元素的語法:元素1 > 元素2
注意,最終選擇的元素是 元素2, 並且要求這個 元素2 是 元素1 的直接子元素
多層的情況: 元素1 > 元素2 > 元素3 > 元素4
就是選擇 元素1 里面的子元素 元素2 里面的子元素 元素3 里面的子元素 元素4 , 最終選擇的元素是 元素4
如果 元素2 是 元素1 的 后代元素:元素1 元素2
中間是一個或者多個空格隔開
最終選擇的元素是 元素2 , 並且要求這個 元素2 是 元素1 的后代元素。
--------------------------------------------------------------------------------------------------------------------
4、根據其他屬性選擇元素的表示方法
比如<a href="http://www.miitbeian.gov.cn">蘇ICP備88885574號</a>
css 選擇器支持通過任何屬性來選擇元素,語法是用一個方括號 [] 。
比如要選擇上面的a元素,就可以使用 [href="http://www.miitbeian.gov.cn"] 。
element = wd.find_element_by_css_selector('[href="http://www.miitbeian.gov.cn"]')
前面可以加上標簽名的限制,比如 div[class='SKnet'] 表示 選擇所有 標簽名為div,且class屬性值為SKnet的元素。
根據屬性選擇,還可以不指定屬性值,比如 [href] , 表示選擇 所有 具有 屬性名 為href 的元素,不管它們的值是什么。
CSS 還可以選擇 屬性值 包含 某個字符串 的元素 (和正則表達式的一些符號比較類似)
比如, 要選擇a節點,里面的href屬性包含了 miitbeian 字符串,寫 a[href*="miitbeian"]
選擇 屬性值 以某個字符串 開頭 的元素
比如, 要選擇a節點,里面的href屬性以 http 開頭 ,寫 a[href^="http"]
選擇 屬性值 以某個字符串 結尾 的元素
比如, 要選擇a節點,里面的href屬性以 gov.cn 結尾 ,寫 a[href$="gov.cn"]
如果一個元素具有多個屬性
<div class="misc" ctype="gun">沙漠之鷹</div>
CSS 選擇器 可以指定 選擇的元素要 同時具有多個屬性的限制,像這樣 div[class=misc][ctype=gun]
注意,tag及其屬性共同作為限定條件去 定位一個元素,中間不要有空格。像上面代表有父子關系的才有空格。
elements = wd.find_elements_by_css_selector('span[class="date"]') 其中span后面不要有空格。

5、驗證條件正確性
有時候定位元素寫的條件比較復雜,可以直接在瀏覽器F12的element標簽下,按Ctrl + F,把你寫的條件粘貼至搜索框,回車執行。
找到的元素會高亮顯示。從而達到驗證的目的。
