最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Selenium中元素定位方式

 更新時間:2022年06月07日 10:18:17   作者:渴望力量的哈士奇  
測試對象的定位和操作是我們利用 selenium 編寫自動化腳本和 webdriver 的核心內容。本文我們就來學習一下常用的元素定位方法有哪些吧

測試對象的定位和操作是我們利用 selenium 編寫自動化腳本和 webdriver 的核心內容,其中 “操作” 這一部分又是建立在 “selenium” 元素定位的基礎之上的。所以對元素對象的定位就顯得越發(fā)的重要,接下來我們就學習一下常用的元素定位方法有哪些。

八大元素定位方式

定位元素的目的一般有以下幾種,一種是要操作這個對象;還有就是可能要獲取對象的一些屬性,比如說需要得到對象的 name 屬性 、class 屬性 等等。這些都會用到元素的定位, webdriver 提供了比較常用的 8 種元素定位方式。

  • ID:通過元素的 id 定位 (前提條件 元素須有 id 屬性,以下相同)
  • NAME:通過元素的 name 定位
  • Class Name:通過元素的 class name 屬性定位
  • Link Text:假如是 a 標簽的話 可以使用 link text 來定位
  • Partial Link Text:當 a 標簽的內容非常長的話,可以通過 Partial Link Text 匹配部分內容來進行定位
  • Tag Name:可以直接使用 Tag Name 定位標簽來定位
  • Xpath:可以使用 Xpath 元素路徑來進行定位
  • Css Selector:利用 css 選擇器來定位

通過元素 id 定位

鑒于上述的定位方法一般情況下很少能夠在一個頁面上找齊,這里準備了一個本地的 html 頁面,方便我們練習使用。

首先打開我們的本地 html 文件,通過查看頁面的源碼,可以看到 Email 輸入框是具備 id 屬性的,這里就可以通過 定位 元素id 的方式定位該元素,見下圖:

元素 id定位示例代碼如下:

# coding:utf-8

from time import sleep
from selenium import webdriver


driver = webdriver.Chrome()     # 啟動 Chrome瀏覽器的 driver
driver.maximize_window()        # Chrome 瀏覽器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/form.html')       # 打開本地的 "form.html" 文件
sleep(2)
driver.find_element_by_id("inputEmail").click()     # 通過 id 定位 id="inputEmail"的元素,執(zhí)行點擊操作。
sleep(1)

driver.quit()

運行結果如下:

從上圖中,我們可以看到通過 id 定位到了 Email 輸入框的元素,并執(zhí)行了點擊操作。

通過元素 name 定位

通過元素的 name 屬性定位 password 元素,然后執(zhí)行點擊操作,見下圖:

元素 name 屬性定位示例代碼如下:

# coding:utf-8

from time import sleep
from selenium import webdriver


driver = webdriver.Chrome()     # 啟動 Chrome瀏覽器的 driver
driver.maximize_window()        # Chrome 瀏覽器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/form.html')       # 打開本地的 "form.html" 文件
sleep(2)
driver.find_element_by_id("inputEmail").click()     # 通過 id 定位 id="inputEmail"的元素,執(zhí)行點擊操作。
sleep(2)
driver.find_element_by_name("password").click()		# 通過 name 定位 name="password",執(zhí)行點擊操作。
sleep(1)

driver.quit()

運行結果如下:

從上圖中,我們可以看到通過 name 定位到了 Password 輸入框的元素,并執(zhí)行了點擊操作。

通過元素 class name 定位

通過元素的 class name 屬性定位 Email 元素所在的 div,然后通過 js 的調試,讓該 div 出現(xiàn)閃爍的效果。如果正常閃爍,則說明我們定位成功了。見下圖:

元素 class name 屬性定位示例代碼如下:

# coding:utf-8

from time import sleep
from selenium import webdriver


driver = webdriver.Chrome()     # 啟動 Chrome瀏覽器的 driver
driver.maximize_window()        # Chrome 瀏覽器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/form.html')       # 打開本地的 "form.html" 文件
sleep(2)
element = driver.find_element_by_class_name("controls")     # 將定位到的 "class name" 為 "controls" 的元素賦值給 element
driver.execute_script('$(arguments[0]).fadeOut().fadeIn()', element)    # 通過 JS 執(zhí)行的方式將 element 元素執(zhí)行 消失、出現(xiàn)
sleep(1)

driver.quit()

運行結果如下:

從上圖中,我們可以看到通過 class name 定位到了 Email 元素所在的 div 塊,出現(xiàn)了閃爍的效果,說明我們已經(jīng)定位到了該 class name = “controls” 的 div 塊。

通過 link text 與 partial link text 定位

通過 a 標簽 的字符或者部分字符的匹配,定位到 register 元素。

這里就不進行截圖演示了,直接上代碼吧。

# coding:utf-8

from time import sleep
from selenium import webdriver


driver = webdriver.Chrome()     # 啟動 Chrome瀏覽器的 driver
driver.maximize_window()        # Chrome 瀏覽器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/form.html')       # 打開本地的 "form.html" 文件
sleep(2)

link = driver.find_element_by_link_text("register")
driver.execute_script('$(arguments[0]).fadeOut().fadeIn()', link)
sleep(1)

partile_link = driver.find_element_by_partial_link_text("reg")
driver.execute_script('$(arguments[0]).fadeOut().fadeIn()', partile_link)
sleep(1)

driver.quit()

通過 css selector 選擇器定位

一般情況下,不推薦視同這種方式,因為首先需要對 css 的語法有一定的理解,同時這種定位的方式呢,維護性較差。任何一個小的頁面變動都會影響到我們已經(jīng)利用 css selector 定位好的元素。

獲取 css selector 方式,見下圖:

通過 css selector 定位元素代碼如下:

# coding:utf-8

from time import sleep
from selenium import webdriver


driver = webdriver.Chrome()     # 啟動 Chrome瀏覽器的 driver
driver.maximize_window()        # Chrome 瀏覽器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/form.html')       # 打開本地的 "form.html" 文件
sleep(2)
div = driver.find_element_by_css_selector("body > form > div:nth-child(1) > div")   # 這種css層級方式的維護性很差
driver.execute_script('$(arguments[0]).fadeOut().fadeIn()', div)
sleep(2)

driver.quit()

截圖就算了,一般不推薦使用。

通過 Xpath 定位

通過 Xpath 定位元素,是最常用的方法之一,尤其是在前端頁面不規(guī)范、沒有 id、name等屬性的情況下。獲取 xpath 方式,見下圖:

利用 xpath 定位元代碼示例如下:

# coding:utf-8

from time import sleep
from selenium import webdriver


driver = webdriver.Chrome()     # 啟動 Chrome瀏覽器的 driver
driver.maximize_window()        # Chrome 瀏覽器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/form.html')       # 打開本地的 "form.html" 文件
sleep(2)

email_xpath = driver.find_element_by_xpath('//*[@id="inputEmail"]')     # xpath 定位
driver.execute_script('$(arguments[0]).fadeOut().fadeIn()', email_xpath)
sleep(2)

driver.quit()

運行結果如下:

從上圖中,我們可以看到通過 xpath 定位到了 Email 元素所,出現(xiàn)了閃爍的效果,說明我們已經(jīng)定位到了該元素。

使用 "xpath" 定位,可以使用 "id"、"name" 等更多的方式或者特殊的屬性來定位到元素;建議通過基礎屬性定位的同時,使用 xpath 也依然顯得更友好一些,也更便捷。未來做一些框架的封裝的時候也會變得更簡單。

通過 tag_name 定位

通過查看頁面元素,我們發(fā)現(xiàn)頁面只有一個 form ,那么這個時候就可以利用 tag_name 直接定位到這個 form 了。見下圖:

通過 tag name 定位元素代碼示例如下:

# coding:utf-8

from time import sleep
from selenium import webdriver


driver = webdriver.Chrome()     # 啟動 Chrome瀏覽器的 driver
driver.maximize_window()        # Chrome 瀏覽器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/form.html')       # 打開本地的 "form.html" 文件
sleep(2)

print(driver.find_element_by_tag_name("form").get_attribute("class"))   # 打印輸出 tag name 為 "form" 的 class 的 值

driver.quit()

運行結果如下:

以上就是詳解Selenium中元素定位方式的詳細內容,更多關于Selenium元素定位的資料請關注腳本之家其它相關文章!

相關文章

  • 解決python將xml格式文件轉換成txt文件的問題(xml.etree方法)

    解決python將xml格式文件轉換成txt文件的問題(xml.etree方法)

    從數(shù)據(jù)分析的角度去看xml格式的數(shù)據(jù)集,具有簡單性,結構和內容分離、可擴展性的特征,今天通過本文給大家分享python將xml格式文件轉換成txt文件的問題及解決方法(xml.etree方法),感興趣的朋友一起看看吧
    2021-09-09
  • 離線安裝Pyecharts的步驟以及依賴包流程

    離線安裝Pyecharts的步驟以及依賴包流程

    這篇文章主要介紹了離線安裝Pyecharts的步驟以及依賴包流程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-03-03
  • Python入門基礎之import機制

    Python入門基礎之import機制

    這篇文章主要給大家介紹了關于Python入門基礎之import機制的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Python3 pip3 list 出現(xiàn) DEPRECATION 警告的解決方法

    Python3 pip3 list 出現(xiàn) DEPRECATION 警告的解決方法

    今天小編就為大家分享一篇Python3 pip3 list 出現(xiàn) DEPRECATION 警告的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python中常見的5種框架解讀

    python中常見的5種框架解讀

    這篇文章主要介紹了python中常見的5種框架,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 淺析Python中getattr和getattribute的調用

    淺析Python中getattr和getattribute的調用

    在Python中,getattr和getattribute是兩個用于屬性訪問的重要函數(shù),它們可以在運行時動態(tài)地獲取對象的屬性或自定義屬性訪問行為,下面我們就來學習一下它們的具體用法吧
    2023-11-11
  • python讀取文件指定行內容實例講解

    python讀取文件指定行內容實例講解

    在本篇文章里小編給大家整理的是關于python讀取文件指定行內容實例講解,需要的朋友們可以參考下。
    2020-03-03
  • Python魔法方法詳解

    Python魔法方法詳解

    今天小編就為大家分享一篇關于Python魔法方法詳解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 一篇文章帶你入門python之推導式

    一篇文章帶你入門python之推導式

    這篇文章主要為大家詳細介紹了python的推導式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python中的閉包實例詳解

    Python中的閉包實例詳解

    這篇文章主要介紹了Python中的閉包,針對閉包的定義、用法及注意事項進行了實例講解,有助于讀者深入理解閉包的概念及用法,需要的朋友可以參考下
    2014-08-08

最新評論

贵南县| 建瓯市| 且末县| 吴桥县| 连江县| 沙坪坝区| 桃源县| 泽普县| 江西省| 乐清市| 永新县| 原阳县| 民县| 昌宁县| 盐池县| 西平县| 汉阴县| 布尔津县| 庄河市| 瑞昌市| 厦门市| 清水河县| 乐亭县| 马边| 广西| 安龙县| 铜梁县| 和龙市| 历史| 岳池县| 土默特右旗| 神池县| 喀什市| 德安县| 尼玛县| 乌拉特后旗| 汤阴县| 尼勒克县| 青神县| 洪江市| 宜兰县|