Robot framework之元素定位實戰

2022-11-24 19:36:55 字數 4126 閱讀 3510

web頁面都是由許多標籤和元素組成的,每個標籤或元素都是很多屬性,好比一個人   id 和name 可以看作一個人的身份證號和姓名。下面看下教育局招生系統的使用者名稱輸入框的標籤id 和name屬性值。

id = txtusername

name = account

在robot framework 中**實現:

link定位就是根據元素的文字資訊進行定位。

專案例子:

**實現:

xpath 是一種在xml 文件中定位元素的語言。因為html 可以看做xml 的一種實現,所以selenium使用者可是使用這種強大語言在web 應用中定位元素。

假如,一個人沒身份證號沒名字怎麼找呢?想想你是怎麼找朋友吃飯的,他手機不通,**不回呢?直接上他家去唄,那你一定有他家住址,xx 市xx 區xx 路xx 號。xpath 就可以通過這種層級關係找到元素。

1、xpath 的絕對路徑:

xpath = /html/body/div[1]/div[4]/div[2]/div/form/span[1]/input

我們可以從最外層開始找,html 下面的body 下面的div 下面的第4 個div 下面的....input 標籤。通過一級一級的鎖定就找到了想要的元素。

絕對路徑易讀性很差,而且很容易受頁面某一元素的調整而失效,絕對路徑的用法往往是在我們迫不得已的時候才用的。大多時候用相對路徑更簡便。相對路徑的定位有多種方法。

一)元素本身

xpath 同樣可以利用元素自身的屬性:

xpath = //*[@id=’ txtusername’]

//表示某個層級下,*表示某個標籤名。@id= txtusername 表示這個元素有個id 等於txtusername 。

當然,一般也可以制定標籤名:

xpath = //input[@id=’ txtusername’]

元素本身,可以利用的屬性就不只侷限為於id 和name ,如:

xpath = //input[@type=’text’]

xpath = //input[@autocomplete=’off’]

但要保證這些元素可以唯一的識別一個元素。

專案例子:

**實現:

二)通過找上級

當我們要找的一個人是個剛出生的嬰兒,還沒起名子也沒有入戶口(身份證號),但是你會永遠跟在你父親的身邊,你的父親是有唯一的名字和身份證號的,這樣我們可以先找到你父親,自然就找到你的。

元素的上級屬性為:

**實現:

xpath = //div[@class=’ mar’]/input

如果爸爸沒有唯一的屬性,可以找爺爺:

xpath = //form[@id=’ loginform’]/div[2]/input

這樣一級一級找上去,直到html ,那麼就是一個絕對路徑了。

三)布林值寫法:

如果一個人的姓名不是唯一的,身份證號也不是唯一的,但是同時叫張三並且身份證號為123 的人卻可以唯一的確定一個人。那麼可以這樣寫:

xpath = //input[@id=’ txtusername’ and @name=’ account’]

可以and ,當然也可以or :

xpath = //input[@id=’ txtusername’ or @name=’ account’]

但or 的實際意義不太。我們一般不需要說,找的人名字或者叫張三,或者身份證號是123 也可以。

css(cascading style sheets)是一種語言,它被用來描述html 和xml 文件的表現。css 使用選擇器來為頁面元素繫結屬性。這些選擇器可以被selenium 用作另外的定位策略。

css 可以比較靈活選擇控制元件的任意屬性,一般情況下定位速度要比xpath 快,但對於初學者來說比較難以學習使用,下面我們就詳細的介紹css 的語法與使用。

css 選擇器的常見語法:

選擇器

例子

描述

**

class 選擇器,選擇class="intro"的所有元素

.class

.intro

選擇所有元素

#id#firstname

id 選擇器,選擇所有id="firstname"所有元素

element

p

元素所有元素

element > element

div > input

選擇父元素為元素的所有元素

element + element

div + input

選擇緊接在元素之後的所有元素

[attribute=value]

[target=_blank]

選擇target="_blank" 的所有元素

通過class 屬性定位:

css=. mar

css=. form-signin

csscss_selector()方法用於css 語言定位元素,點號(.)表示通過class 屬性來定位元素。

通過id 屬性定位:

css=#kw

css=#su

井號(#)表示通過id 屬性來定位元素。

通過標籤名定位:

css=input

在css 語言中用標籤名定位元素不需要任何符號標識,直接使用標籤名即可,但我們前面已經瞭解到標籤名重複的概率非常大,所以通過這種方式很難唯一的標識一個元素。

通過父子關係定位:

css=span>input

上面的寫法表示有父親元素,它的標籤名叫span,查詢它的所有標籤名叫input 的子元素。

通過屬性定位:

css=input[autocomplete='off']

css=input[maxlength='100']

css=input[type='submit']

在css 當中也可以使用元素的任意屬性,只要這些屬性可以唯一的標識這個元素。

組合定位:

我們當然可以把上面的定位策略組合起來使用,這樣就大大加強了元素的唯一性。

css=span. form-signin>input. mar

css=span. form-signin>input# txtusername

有一個父元素,它的標籤名叫span,它有一個class 屬性值叫form-signin,它有一個子元素,標籤名叫input,並且這個子元素的class 屬性值叫mar。好吧!我們要找的就是具有這麼多特徵的一個子元素。

專案例子:

**實現:

Selenium之元素定位

1.檢視頁面元素 id class type name等。2.通過webdriver的方法定位 find element by name find element by id find element by class name browser.find element by xpath 絕對路徑 ...

selenium python之xpath元素定位

注意點 1.表示相對路徑 2.表示絕對路徑 3.斜槓前的.表示當前節點,有或沒有都沒有關係 4.xpath的下標從1開始 5.xpath定位方法中用了class,需要取整個class屬性,即使中間有空格,即有多個class屬性 同一個元素,我們可以用多種方法來定位 1.通過id定位 2.通過name...

初探appium之元素定位(1)

uiautomatorviewer 這個工具是在我們android的sdk的tools的資料夾裡面的。使用方法也很簡單。這裡我以安卓模擬器為例給大家進行講解。首先開啟模擬器,開啟到我們需要定位的元素的頁面。然後再tools中雙擊uiautomatorviewer,這個是個批處理的檔案,雙擊就可以開啟...