我們知道,在selenium中,定位方式可以分為8種:
1,id定位
2,class定位
3,name定位
4,link_text定位
5,partial_link_text定位
6,tag定位
7,xpath定位
8,css定位
那麼在這8種定位方式種,我們該如何取捨呢?原則如下:
原則一:如果元素有id屬性,則首選id定位,因為在前端單個頁面中,id是唯一的,動態id不考慮(但如今很多前端開發人員的**書寫並不規範,元素不一定擁有id屬性)
原則二:盡量少用tag_name定位,因為在乙個前端頁面中,會有很多的重複標籤名,僅靠標籤名定位可能很難精確定位到想要的元素,所以tag_name定位很多時候是與其他定位方式組合使用
原則三:xpath定位功能強大,但如果最求更高的定位效率,則更推薦css定位
原則四:根據頁面元素的特點,以及要定位元素的屬性特點,選擇相應的、合適的定位方法
拓展:在python中,有乙個適合各種定位方式的方法:
def find_element(self, by=by.id, value=none):"""find an element given a by strategy and locator. prefer the find_element_by_* methods when
possible.
:usage:
element = driver.find_element(by.id, 'foo')
:rtype: webelement
"""if
self.w3c:
if by ==by.id:
by =by.css_selector
value = '
[id="%s"]
' %value
elif by ==by.tag_name:
by =by.css_selector
elif by ==by.class_name:
by =by.css_selector
value = "
.%s" %value
elif by ==by.name:
by =by.css_selector
value = '
[name="%s"]
' %value
return
self.execute(command.find_element, )['
value
']
注意:使用該方法時,需要結合by類使用。
by類需要匯入:from selenium.webdriver.common.by import by
引數:by=by.xx,如by.id,by.link_text等等
引數:value,對應定位方式的值,如id屬性值,xpath定位器,css定位器等
返回值:webelement物件
拓展:我們前面說過的find_element_by_id(),find_element_by_name(),find_element_by_class_name()等等定位的方法,其方法體中最終都是呼叫了find_element()方法。在webui自動化中,對於元素的定位,可以對find_element(s)進行二次封裝,已達到靈活運用和復用目的。
selenium 定位方式說明
1.通過id定位 driver.find element by id sb form q send keys 51testing 2.通過name 定位 driver.find element by name address mobile send keys 15036121234 3.通過clas...
selenium 常用定位方式
from selenium import webdriver option webdriver.chromeoptions option.add experimental option useautomationextension false option.add experimental opti...
Selenium不同的定位方式
driver.findelement by.id id值 driver.findelement by.name name值 driver.findelement by.linktext 鏈結的全部文字內容 driver.findelement by.partiallinktext 鏈結的部分文字內容...