Selenium元素定位 提高篇 CSS定位

2021-09-26 03:36:49 字數 3750 閱讀 1670

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...