語法:find_element_by_css_selector("css選擇器定位策略”) 或者 find_elements_by_css_selector("css選擇器定位策略”)
1,css屬性定位:
a,css可以通過元素的 id,class, 標簽 這三個常規屬性直接定位到。
tips:若用id定位,則用 #。若用class定位,則用 .
下面是百度搜索框的HTML代碼:
通過css selector定位有如下三種常規方式:
find_element_by_selector("#kw") (#表示通過id定位)
find_element_by_selector(".s_ipt") (. 表示通過class定位)
find_element_by_selector("標簽名“”) 其實單純通過標簽名來定位元素,是有很大局限性的,因為一個頁面中,非常大可能的
存在標簽名的重復,因此無法很精確的定位。
b,css通過其他屬性定位。
通過 標簽+屬性 即 標簽名[屬性名=屬性值]。 還是以百度搜索框為例:
find_element_by_css_selector("input[autocomplete='off']")
tips:和xpath定位不同的是,標簽名前不用// ,[ ]內的屬性名前不用@符號,而xpath則需要。其余的規則與xpath相同。
如果屬性是唯一的,那么標簽名可以不用寫。
c,層級定位。
通過 父標簽[父標簽屬性名=父標簽屬性值]>(或者空格)子標簽 我們以百度搜索按鈕為例:
find_element_by_css_selector("span[class='bg s_btn_wr']>input")
通過搜索按鈕的父標簽中的class屬性定位,然后找到其子標簽input,也就是我們的搜索按鈕元素所在。
d,索引定位。
當父標簽中有很多相同的子標簽時,通過索引找到所需要定位的元素。
通過 父標簽[父標簽屬性名=父標簽屬性值]>子標簽:nth-child(索引序號)
tips:索引從1開始
我們以126郵箱的密碼輸入框為例:
find_element_by_css_selector("div[class='u-input box]>input:nth-child(2)')
記住:用css_selector進行元素定位,父標簽到子標簽都用>或空格。如果用的是>,意思是指第一個子標簽
而用空格的話,則可以為任何子標簽。
e, 邏輯定位。
在xpath中,邏輯定位用到“and”,"or",“not”,而在我們的css_selector中,則不需要。
通過 標簽名[標簽名1= 屬性值1][標簽名2=屬性值2]
同樣,我們通過126郵箱的密碼輸入框為例:
f, 模糊匹配。
^:以什么開頭
$:以什么結尾
*:匹配所有
find_element_by_css_selector(“標簽名[屬性名*(或^,或$)='屬性值']”)