前言
大部分人在使用selenium定位元素時,用的是xpath定位,因為xpath基本能解決定位的需求。css定位往往被忽略掉了,其實css定位也有它的價值,css定位更快,語法更簡潔。
一:css:屬性定位
1、css可以通過元素的id、class、標簽這三個常規(guī)屬性直接定位,如下:
①. css用#號表示id屬性,如:id=“kw” 可以寫成:#kw
②. css用.表示class屬性,如:class="s_ipt"可以寫成:.s_ipt
③. css直接用標簽名稱,無任何標識符,如:input
二:css:其他屬性
1、css除了上述以外,也可以通過其他屬性定位,如下:
①. css通過name屬性定位:
driver.find_element(By.CSS_SELECTOR,"[name='wd']")
②. css通過autocomplete屬性定位:
driver.find_element(By. CSS_SELECTOR,"[autocomplete='off']")
③.css通過type屬性定位:
driver.find_element(By.CSS_SELECTOR,"[type='text']")
三:css:標簽
1、css頁可以通過標簽與屬性的組合來定位元素,如下:
①. css通過標簽與class屬性的組合定位
driver.find_element(By.CSS_SELECTOR,"input.s_ipt")
②. css通過標簽與id屬性的組合定位
driver.find_element(By.CSS_SELECTOR,"input#kw")
③. css通過標簽與其他屬性組合定位
driver.find_element(By.CSS_SELECTOR,"input[id='kw']")
四:css:層級關系
1、如://form[@id=‘form’]/span/input和//form[@class=‘fm’]/span/input
①. css通過層級關系定位
driver.find_element(By.CSS_SELECTOR,"form#form>span>input")
②. css通過層級關系定位
driver.find_element(By.CSS_SELECTOR,"form.fm>span>input")
五:css:索引
1、css也可以通過索引option:nth-child(1)來定位子元素,如下:
①. 選擇第一個子元素
driver.find_element(By.CSS_SELECTOR,"select#nr>option:nth-child(1)")
②. 選擇第二個子元素
driver.find_element(By.CSS_SELECTOR,"select#nr>option:nth-child(2)")
③. 選擇第三個子元素
driver.find_element(By.CSS_SELECTOR,"select#nr>option:nth-child(3)")
六:css:邏輯運算
1、css同時匹配兩個屬性,不需要and關鍵字
driver.find_element(By.CSS_SELECTOR,"input[id='kw'][name='wd']")
七:css:模糊匹配
driver.find_element(By.CSS_SELECTOR,"input:contains('kw')")
css語法還有更多更強大定位策略,以后再繼續(xù)深入學習。