selenium八大元素定位方法


1.ID定位

可以根據元素的id來定位屬性,id是當前整個HTML頁面中唯一的,所以可以通過id屬性來唯一定位一個元素,是首選的元素定位方式。(動態ID不做考慮)

# 導入webdriver和By
from selenium import webdriver
from selenium.webdriver.common.by import By

# 實例化瀏覽器驅動
driver = webdriver.Chrome()

# 定位方式一
ele1 = driver.find_element_by_id("kw")
# 定位方式二
ele2 = (By.ID,"kw")

2.name定位

根據元素的name來定位屬性,但name並不是唯一的。

# 定位方式一
ele1 = driver.find_element_by_name("wd")
# 定位方式二
ele2 = (By.NAME,"wd")

3.class name定位

根據Class定位屬性,主要是用來元素進行分組,並對這一級元素設置相同的樣式。所以class屬性在當前html頁面當中,也是不能唯一定位到一個元素的,class的屬性只有一個值。

注意:find_element_by_class_name這個方法的參數只能是一個class值,列如:class屬性有空格隔開兩個class的值時,只能選取其中一個進行定位。

# 定位方式一
ele1 = driver.find_element_by_class_name("s_ipt")
# 定位方式二
ele2 = (By.CLASS_NAME,"s_ipt")

4.tag name定位

通過元素的標簽名來定位元素,如:input標簽、span標簽

ele = driver.find_element_by_tag_name()

5.6.link_text和partial_link_text定位

link_text和partial_link_text是作用於鏈接a標簽的,link_text用於全部匹配文本值,partial_link_text用於部分匹配文本值。

driver.find_element_by_link_text("抗擊肺炎")
driver.find_element_by_partial_link_text("肺炎")

7.css定位

通過組合的方式進行定位,和XPATH定位方式基本相同。

ele = driver.find_element_by_css_selector(css表達式)

8.xpath定位

xpath基本定位語法:

ele = find_element_by_xpath(xpath表達式)

xpath定位分為絕對定位和相對定位

 絕對定位 (/):嚴格按照路徑、同級元素的位置來定位,缺點:頁面一動,基本崩潰  以/開頭  父/子

例如:/html/body/div[2]/div/form/div[1]/input  #div[2]:2表示div同級目錄下的第二個div

 

相對定位(//):有一個參照物   不考慮路徑和位置,只考慮:有還是沒有!!  以//開頭  //標簽名[@屬性名稱=值]

例如:

1、//input[@name="phone"]  # 標簽名為input並且name屬性值為phone

2、and or 用法

//input[@name="phone" and @datatype="m"]

3、包含  //標簽名[contains(@屬性值,被包含的值)]

//input[contains(@class,"username") and @name="phone"]

4、文本內容定位  text()=值

//a[text()="數據分析     "]

//a[contains(text(),"數據分析")]

 5、層級定位

//div[@id="u1"]//a[@name="tj_login"]

6、軸定位

軸運算:
ancestor:祖先結點 包括父
parent:父結點 給g
preceding: 當前元素節點標簽之前的所有結點。(html頁面先后順序)
preceding-sibling: 當前元素節點標簽之前的所有兄弟結點
following: 當前元素節點標簽之后的所有結點。(html頁面先后順序)
following-sibling:當前元素節點標簽之后的所有兄弟結點

使用語法:
/軸名稱::節點名稱[@屬性=值]
例://div//table//td//preceding::td

與css定位的比較:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM