selenium 常見方法和頁面元素的操作

2021-07-27 15:58:24 字數 3271 閱讀 5047

selenium總共有八種定位方法

by.id() 通過id定位

by.name() 通過name 定位

by.xpath() 通過xpath定位

by.classname() 通過classname定位

by.cssselector() 通過css 定位

by.linktext() 通過linktext

by.tagname() 通過tagname

by.partiallinktext() 通過匹到的部分linktext

其中用得最多的是xpath,cssselector,而且用這兩種定位,基本上可以解決大部分網頁定位困難,至於id,name有時候不能適用於網頁,這個具體情況還是看網頁html怎樣設計的。

xpath-利用元素屬性定位

find_element_by_xpath("//input[@id=『kw』]")

find_element_by_xpath("//input[@name=『wd』]")

find_element_by_xpath("//*[@id=『kw』]")

//input表示查詢頁面上所有的input元素

*//表示查詢頁面上所有元素

//input[1]表示查詢頁面上第乙個input元素

//form[1]/input 表示查詢第乙個form元素下一級的input元素

//form[1]//input 表示查詢頁面上第乙個form元素下的所有input元素,不管巢狀了多少層

//input[@id=『kw』 and @class=『su』] 可以用 and 連線多個屬性來唯一標識乙個元素

查詢頁面根元素://

查詢頁面上所有的input元素://input

查詢頁面上第乙個form元素內的所有子input元素(只要在form元素內的input都算,不管還巢狀了多少個其他標籤,使用相對路徑表示,雙//號)://form[1]//input

查詢頁面上第乙個form元素://form[1]

查詢頁面上id為loginform的form元素://form[@id=『loginform』]

查詢頁面上具有name屬性為username的input元素://input[@name=『username』]

查詢頁面上id為loginform的form元素下的第乙個input元素://form[@id=『loginform』]/input[1]

查詢頁面具有name屬性為contiune並且type屬性為button的input元素://input[@name=『continue』][@type=『button』]

查詢頁面上id為loginform的form元素下第4個input元素://form[@id=『loginform』]/input[4]

常見的cssselector的定位方式:

定位id為flrs的div元素,可以寫成:#flrs 注:相當於xpath語法的//div[@id=』flrs』]

定位id為flrs下的a元素,可以寫成 #flrs > a 注:相當於xpath語法的//div[@id=』flrs』]/a

定位id為flrs下的href屬性值為/forexample/about.html的元素,可以寫成: #flrs > a[href=」/forexample/about.html」]

如果需要指定多個屬性值時,可以逐一加在後面,如#flrs > input[name=」username」][type=」text」]。

*此外,cssselector還有一些高階用法,如果熟練後可以更加方便地幫助我們定位元素,如我們可以利用^用於匹配乙個字首,$用於匹配乙個字尾,用於匹配任意字元。例如:

通過class屬性定位

find_element_by_css_selector(".類屬性值") class選擇器選擇class="a"的所有元素,點號(.)表示通過class屬性定位元素

driver.find_element_by_css_selector(".s_ipt").send_keys(「css」)

driver.find_element_by_css_selector(".bg s_btn").click()

通過id定位元素

find_element_by_css_selector("#id值") id選擇器選擇id="a"的所有元素,#號表示通過id屬性定位元素

driver.find_element_by_css_selector("#kw").send_keys(「huh」)

driver.find_element_by_css_selector("#su").submit()

通過標籤名定位元素(少用)

find_element_by_css_selector(「input」)

通過標籤屬性定位

find_element_by_css_selector(「父標籤》子標籤」)

find_element_by_css_selector(「span>input」)表示選擇父標籤為span的所有input元素

組合定位(通過父子標籤和其屬性結合)

組合定位可以大大加強定位元素的唯一性!

driver.find_element_by_css_selector(「form#form>span>input」).send_keys(「asfa」)

driver.find_element_by_css_selector(「form#form>span>input#su」).click()

要定位的元素是input,父元素是span,爺元素是form;

要定位的元素是input(可以結合它的屬性值),父元素是span,爺元素是form(可以結合它的屬性值)

其實通過css定位也可以像xpath定位那樣通過firebug工具獲得再修改,或選擇要定位的標籤後右鍵-》複製css路徑也行。

各種方式在選擇的時候應該怎麼選擇:

當頁面元素有id屬性時,最好盡量用id來定位。但由於現實專案中很多程式設計師其實寫的**並不規範,會缺少很多標準屬性,這時就只有選擇其他定位方法。

xpath很強悍,但定位效能不是很好,所以還是盡量少用。如果確實少數元素不好定位,可以選擇xpath或cssselector。

當要定位一組元素相同元素時,可以考慮用tagname或name。

當有鏈結需要定位時,可以考慮linktext或partiallinktext方式。

Java Collection常見方法

collection的常見方法 1 新增 boolean add object obj 新增單個物件 boolean addall collection coll 新增集合 2 刪除 boolean remove object obj 刪除單個物件 boolean removeall collect...

Java Set常見方法

set 元素不能重複,無序。set介面中的方法和collection一致 hashset 內部資料結構是雜湊表,是不同步的。雜湊表確定元素是否相同 1 判斷的是兩個元素的雜湊值是否相同,如果相同再判斷兩個物件的內容是否相同。2 判斷雜湊值相同,其實判斷的是物件的hashcode的方法,判斷內容相同,...

Ruby常見方法

1.capitalize方法 該方法是字串類string的乙個方法,對所有字串都適用。它的作用是將呼叫該方法的字串的首字母改為大寫。舉例如下 s ruby s.capitalize ruby 又如 def say goodnight name result good night,capitalize...