程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

八大元素定位方法(Python/Java)

編輯:Python

許多不切實際的鼓勵,大都是來自酒肉朋友或是遠方親戚。

小編最近在學習Web 自動化測試,所以趁熱打鐵,整理下相關的知識點,今天主要分享的是八大元素定位方法,無論是移動端還是web端,八大定位方法是共用的。本篇文章還分別提供了兩種版本(python、java)的元素定位方式,一種Python版本提供了兩種方式,因為在selenium中八種元素定位的底層實現均為

driver.find_element(By.xxx,"value")

1. id

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值"))

2. name

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值"))

3.class_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屬性值"))

4. tag_name

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("標簽名"))

5. link_text

只能定位超鏈接標簽,可以精准定位a標簽的全部文本內容。
Python版本

element = driver.find_element_by_link_text("鏈接的全部文字")
或者
element = driver.find_element(By.LINK_TEXT,"鏈接的全部文字")

Java版本

element = driver.findElement(By.LinkText("鏈接的全部文字"))

6. partial_link_text

只能定位超鏈接標簽,輸入部分鏈接文字即可。
Python版本

driver.find_element_by_partial_link_text("鏈接的部分文字")
或者
element = driver.find_element(By.PARTIAL_LINK_TEXT,"鏈接的部分文字")

Java版本

element = driver.findElement(By.partialLinkText(("鏈接的部分文字"))

7. XPath

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"))

8. CSS

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定位表達式"))

總結

  1. id、name、class_name:為元素屬性定位
  2. tag_name:為元素標簽名稱
  3. link_text、partial_link_text:為超鏈接定位(主要是處理a標簽)
  4. XPath:為元素路徑定位
  5. CSS:為CSS選擇器定位
  6. 萬能方法:XPath

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved