css (cascading style sheets) 是一種用於渲染 html 或者 xml 文件的語言,css 利用其選擇器可以將樣式屬性繫結到文件中的指定元素。理論上說無論乙個元素定位有多複雜都能夠定位到元素。
因為不同的瀏覽器 xpath 引擎不同甚至沒有自己的 xpath 引擎,這就導致了 xpath 定位速度較慢,所以selenium 官方極力推薦使用 css 定位。
理論永遠與實際脫節,很多情況下都無法使用css定位到相應元素,而xpath非常容易做到,其次xpath比css更加簡單明瞭易上手。
css 選擇器參考手冊:
在css中,選擇器是一種模式,用於選擇需要新增樣式的元素。
「css」列指示該屬性是在哪個css版本中定義的(css1、css2還是css3)。
選擇器例子
例子描述
css.class
.intro
選擇 class = 「intro」的所有元素
1#id
#firstname
選擇 id = 「firstname」的所有元素1*
*選擇所有元素
2element
p選擇所有元素
1element,element
div,p
選擇所有和所有元素
1element element
div p
選擇所有元素內部的所有元素
1element>element
div>p
選擇父元素為元素的所有元素
2element+element
div+p
選擇緊接在元素之後的所有元素
2[attribute]
[target]
選擇帶有target屬性的所有元素
2[attribute=value]
[target=_blank]
選擇帶有target=』_blank』的所有元素
2[attribute~=value]
[title~=flower]
選擇title屬性包含單詞「flower」的所有元素
2[attribute¦=value]
[title¦=en]
選擇lang屬性值以「en」開頭的所有元素
2:link
a:link
選擇所有未被訪問的鏈結1–
–––~~未完待續~~
以如下html為例:
/html>css匹配例項
locator
匹配css=div
css=div.formdiv
css=#recordlist
css=ul#recordlist
css=div.subdiv p
css=div.subdiv>ul>p
heading
css=form+div
css=p+li
css=p~li
兩者定位到的都是cat
但是storecsscount的時候,前者得到1,後者得到4
定位方式
xpath
css標籤
//div
divby id
//div[@id=『recordlist』]
div#recordlist
by class
//div[@class=『subdiv』]
//div[contains(@class,『subdiv』)]
div.subdiv
by 屬性
//input[@name=『username』]
input[name=username]
input[name^=user]
input[name$=name]
input[name*=erna]
定位子元素
//ul[@id=『recordlist』]/*
//ul/p
ul#recordlist>*
ul#recordlist>p
定位後代元素
//div[@class=『subdiv』]//p
div p
by index
//li[4] 定位第四個li
li:nth-child(5)
by content
//li[contains(text(),『goa』)]
li contains(『goa』)
該方法已經廢棄
根據子元素回溯定位父元素
匹配到:
?根據兄弟元素定位
都匹配到:
匹配到:
selenium元素定位篇 name定位
前面說過,除了通過id定位之外,還可以通過其他元素的屬性進行定位,前面說了class定位,這次說一下name屬性定位。在python中,通過name屬性定位的方法如下 def find element by name self,name finds an element by name.args n...
selenium元素定位篇 id定位
在前端,id是唯一的,只屬於乙個元素。在python中,元素定位的方法如下 def find element by id self,id finds an element by id.args id the id of the element to be found.returns webeleme...
selenium元素定位篇 class定位
在前端的單個頁面中,通過id定位是萬無一失的,因為id值是唯一的。但是,並不是每個元素都有id屬性,所以我們可以通過其他元素進行元素定位。今天要說的就是元素定位方法之一 class定位。在python中,通過class定位的方法如下 def find element by class name se...