1. 程式人生 > 其它 >【python】【selenium】元素定位方式

【python】【selenium】元素定位方式

在進行編寫web端自動化測試指令碼的時候最重要的就是元素定位,下面總結了四種定位元素方案,如果有其他比較好用的,歡迎留言交流。

1、find_element_by_

  • find_element_by_id:通過ID進行匹配查詢,只返回匹配到的一個元素

  • find_element_by_name:通過name進行匹配查詢,只返回匹配到的一個元素

  • find_element_by_xpath:通過xpath進行匹配查詢,只返回匹配到的一個元素

  • find_element_by_link_text:通過連結內容進行匹配查詢,只返回匹配到的一個元素

  • find_element_by_partical_link_text:通過部分連結內容進行匹配查詢,只返回匹配到的一個元素

  • find_element_by_tag_name:通過標籤名稱進行匹配查詢,只返回匹配到的一個元素

  • find_element_by_class_name:通過class名稱進行匹配查詢,只返回匹配到的一個元素

  • find_element_by_css_selector:通過CSS選擇器進行匹配查詢,只返回匹配到的一個元素

 

2、find_elements_by_

       除了上面這些查詢單個元素的方法之外,Selenium還定義查詢多個元素的方法:

  • find_elements_by_name:通過name進行匹配查詢,返回所有匹配到的元素列表

  • find_elements_by_xpath:通過xpath進行匹配查詢,返回所有匹配到的元素列表

  • find_elements_by_link_text:通過連結內容進行匹配查詢,返回所有匹配到的元素列表

  • find_elements_by_partical_link_text:通過部分連結內容進行匹配查詢,返回所有匹配到的元素列表

  • find_elements_by_tag_name:通過標籤名稱進行匹配查詢,返回所有匹配到的元素列表

  • find_elements_by_class_name:通過class名稱進行匹配查詢,返回所有匹配到的元素列表

  • find_elements_by_css_selector:通過CSS選擇器進行匹配查詢,返回所有匹配到的元素列表

 

3、find_element() 

from selenium import webdriver
# 需要先引入這個
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

inputElement = driver.find_element(By.ID, 元素表示式)

# 同樣也有對應的獲取列表的方法
inputElementSli = driver.find_elements(By.NAME, 元素表示式)

 

4、分步驟定位

進行元素定位的時候,有時會遇到一些特別難以定位的元素,此時你可以使用下分步驟定位,一步步縮小定位範圍

ele = driver.find_elements_by_xpath("//div[@id='category-block']//ol/li")
b = ele.find_elements_by_xpath('.//li[@class=\'subcate-item\']//span')

 

注意:

1、根據 class_name 進行定位的時候,有時候會遇到複合類,也就是 class 屬性中間有空格,class 屬性比較特殊,class屬性中間的空格是間隔符號,表示的是一個元素有多個class的屬性名稱,此時元素定位的時候任取一個即可(不保證唯一定位)

2、selenium 沒有提供判斷元素是否存在的功能,所以當你需要判斷一個元素存不存在的時候,直接定位可能會報錯。我們可以去匹配一個元素列表,列表為空則元素不存在,列表不為空則元素存在