Selenium Java Web 自動化實踐總結(三)Selenium元素定位

關於元素定位是做自動化測試的基礎,很多文章都寫了id,name,classname這幾種定位方式,很早以前開發們寫可能會寫上。現在基本就不寫了。老牌的網站還有的,like 百度。

咱們直說2種,會了這兩種基本就沒問題了。

1.xpath定位,xpath 是啥?xpath是xml文檔中查找信息的語言。呃,需要的在這個地址瞭解下。

http://www.w3school.com.cn/xpath/index.asp

簡單來說xpath 直接瀏覽器打開 F12 ,選擇元素,右鍵複製xpath 即可

也可以手動寫。主要方法如下

1.絕對路徑定位

driver.findElement(By.Xpath("/html/boay/div[1]/div[3]/input")-----意思就是查找 HTML下body下第一個div元素下的第三個div元素下的input輸入框。

2.利用元素屬性進行定位

driver.findElement(By.Xpath("//標籤[@屬性==‘屬性值’]")

driver.findElement(By.Xpath("//input[@id='abc']"),//表示當前頁面的某個目錄下,input表示定位元素的標籤名,[@id='abc']表示這個元素的id是abc。

3.利用元素text進行定位

driver.findElement(By.Xpath("//*[contains(text(),'百度一下')]")  

這些就差不多夠用了。想詳細研究的話,最好學習下 xpath語言

第二種CSS定位 css定位基於css selector 選擇器定位的一種方式。具體語法詳見教程,

http://www.w3school.com.cn/cssref/css_selectors.asp

1.根據class定位 例如元素的class="clss",我們可以寫成

driver.findElement(By.CssSelector(".clss")) 樣寫可以定位到所有class名爲clss 的元素。定位可能不是唯一的。

2.根據元素的屬性定位 例如元素的a<name="name1">,我們可以寫成

driver.findElement(By.CssSelector("a[name=name1]")) 樣寫可以定位到所有name名爲name1的 a標籤元素。定位可能不是唯一的。

3.多級定位:例如我們要定位span 標籤

1.span標籤的父級是<div class="tag">

2.<div class="tag">的父級是<div class="tag-box d-flex flex-row" id="categorieBox">

我們可以這麼寫 driver.findElement(By.CssSelector(".tag-box d-flexflex-row .tag .name"))

.tag-box d-flexflex-row .tag .name : .class名 然後空格  .class名 然後空格 . class名

還有很多css選擇器方法,需要具體研究下css 選擇器,加油。

如果您覺得文章對您有幫助,那就打賞下作者吧。如果您有問題需要諮詢,或者交流心得。請添加qq羣:829468634。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章