許多不切實際的鼓勵,大都是來自酒肉朋友或是遠方親戚。
小編最近在學習Web 自動化測試
,所以趁熱打鐵,整理下相關的知識點,今天主要分享的是八大元素定位方法
,無論是移動端還是web端,八大定位方法是共用的。本篇文章還分別提供了兩種版本(python、java)的元素定位方式,一種Python版本提供了兩種方式,因為在selenium
中八種元素定位的底層實現均為
driver.find_element(By.xxx,"value")
id定位是通過元素的id屬性來定位元素,html規定id屬性在整個html文檔中必須是唯一的。
Python版本
element = driver.find_element_by_id("id值")
或者
element = driver.find_element(By.ID,"id值")
Java版本
element = driver.findElement(By.id("id值"))
name定位就是根據元素屬性來定位,html文檔中name的屬性值是可以重復的。
如果name有多個屬性值,默認使用第一個。
Python版本
element = driver.find_element_by_name("name值")
或者
element = driver.find_element(By.NAME,"name值")
Java版本
element = driver.findElement(By.name("name值"))
class_Name定位就是根據元素class屬性值來定位元素,html通過使用class來定位元素的樣式。如果class有多個屬性值,默認返回第一個。
Python版本
element = driver.find_element_by_class_name("頁面元素的Class屬性值")
或者
driver.find_element(By.CLASS_NAME,"頁面元素的Class屬性值")
Java版本
element = driver.findElement(By.className("頁面元素的Class屬性值"))
tag_name 定位是通過標簽名來定位,html本質上是由不同的tag組成,每一種標簽一般在頁面會存在多個,所以不方便進行精准定位,一般很少用。
Python版本
element = driver.find_element_by_tag_name("標簽名")
或者
element = driver.find_element(By.TAG_NAME,"標簽名")
Java版本
element = driver.findElement(By.tagName("標簽名"))
只能定位超鏈接標簽,可以精准定位a標簽的全部文本內容。
Python版本
element = driver.find_element_by_link_text("鏈接的全部文字")
或者
element = driver.find_element(By.LINK_TEXT,"鏈接的全部文字")
Java版本
element = driver.findElement(By.LinkText("鏈接的全部文字"))
只能定位超鏈接標簽,輸入部分鏈接文字即可。
Python版本
driver.find_element_by_partial_link_text("鏈接的部分文字")
或者
element = driver.find_element(By.PARTIAL_LINK_TEXT,"鏈接的部分文字")
Java版本
element = driver.findElement(By.partialLinkText(("鏈接的部分文字"))
XPath 為XML Path的簡稱,是一門在XML文檔中查找元素信息的語言,HTML可以看做是XML的一種表現。XPath主要是通過元素的路徑來定位,其中,路徑又分為絕對路徑、相對路徑(XML是一種標記語言,用於數據的存儲和傳遞。)
絕對路徑:從最外層元素到指定元素之間所有經過元素層級的路徑
絕對路徑以 html 跟節點開始,使用 / 來分割元素層級;絕對路徑對頁面結構要求比較嚴格,萬一開發改了路徑並且沒有告訴你,所以不建議使用。
例如:/html/body/div/p[1]/input
相對路徑:匹配任意層級的元素,不限制元素的位置。
相對路徑以 // 開始
例如,//input 或者//*、//input[@password='密碼A']
Tips:
1. 一般使用指定標簽名稱,不實用*代替,效率比較慢
2. 無論是絕對路徑還是相對路徑,/ 後面必須為元素的名稱或者 *
Python版本
element = driver.find_element_by_xpath("//*[@id='username")
或者
element = driver.find_element(By.XPATH,"//*[@id='username")
Java版本
element = driver.findElement(By.xpath("//*[@id='username"))
css定位就是通過css選擇器工具進行定位,css是一種標記語言,用於控制數據的樣式。在selenium中推薦使用CSS定位,因為它比Xpath定位速度要快
Python版本
driver.find_element_by_css_selector("[name='password']")
或者
element = driver.find_element(By.CSS_SELECTOR,"[name='password']")
Java版本
element = driver.findElement(By.cssSelector("css定位表達式"))
總結