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

Selenium常見八大定位法總結(jié)

 更新時間:2023年02月17日 14:17:59   作者:小胖虎*  
自動化最基礎(chǔ)的就屬于定位元素了,元素不會定位,基本上已經(jīng)團(tuán)滅了,就不用再去考慮什么自動化了,下面這篇文章主要給大家介紹了關(guān)于Selenium常見八大定位法的相關(guān)資料,需要的朋友可以參考下

1.1 ID定位

HTML Tag 的 id 屬性值是唯一的,故不存在根據(jù) id 定位多個元素的情況。下面以在百度首頁搜索框輸入文本“python”為例。搜索框的 id 屬性值為“kw”,如圖1.1所示:

代碼如下,“find_element_by_id”方法已廢棄,使用find_element(By.ID, 'kw')

from selenium import webdriver
from selenium.webdriver.common.by import By
 
driver = webdriver.Firefox()
# 需要將瀏覽器驅(qū)動添加到環(huán)境變量中
# 打開百度
driver.get('https://www.baidu.com/')
# 通過id,在搜索輸入框中輸入文本“python”
driver.find_element(By.ID, 'kw').send_keys('python')
# 點擊搜索
driver.find_element(By.ID, 'su').click()
# 關(guān)閉瀏覽器
driver.close()

1.2 name 定位

以上百度搜索框也可以用 name 來實現(xiàn),如圖 1.1 所示,其 name 屬性值為“wd”,方法“find_element(By.NAME, 'wd')”表示通過 name 來定位

代碼如下:

driver = webdriver.Firefox()
# 打開百度
driver.get('https://www.baidu.com/')
# 通過name,在搜索輸入框中輸入文本“自動化測試”
driver.find_element(By.NAME, 'wd').send_keys('自動化測試')
# 點擊搜索
driver.find_element(By.ID, 'su').click()
# 關(guān)閉瀏覽器
driver.close()

注意:用 name 方式定位需要保證 name 值唯一,否則定位失敗。

1.3 class 定位

以百度首頁搜索框為例,如圖 1.1所示,其 class 屬性值為“s_ipt”,“By.CLASS_NAME, 's_ipt'”表示通過 class_name 來定位

代碼如下:

driver = webdriver.Firefox()
# 打開百度
driver.get('https://www.baidu.com/')
# 通過class,在搜索輸入框中輸入文本“web測試”
driver.find_element(By.CLASS_NAME, 's_ipt').send_keys('web測試')
# 點擊搜索
driver.find_element(By.ID, 'su').click()
# 關(guān)閉瀏覽器
driver.close()

1.4 link_text 定位

link_text 是以超鏈接全部名字作為關(guān)鍵字來定位元素的。以百度首頁“新聞”超鏈接為例,如圖 1.2 所示,關(guān)鍵字為“新聞”。

代碼如下:

driver = webdriver.Firefox()
# 打開百度
driver.get('https://www.baidu.com/')
# 通過link_text定位,點擊‘新聞'超鏈接
driver.find_element(By.LINK_TEXT, '新聞').click()
# 關(guān)閉瀏覽器
driver.close()

注意:用此方法定位元素超鏈接,中文字需要寫全。

1.5 partial_link_text 定位

即用超鏈接文字的部分文本來定位元素,類似數(shù)據(jù)庫的模糊查詢。以“新聞”超鏈接為例,只需“新”一個字即可,即取超鏈接全部文本的一個子集。

代碼如下:

driver = webdriver.Firefox()
# 打開百度
driver.get('https://www.baidu.com/')
# 通過partial_link_text定位,用超鏈接文字的部分文本來定位元素,類似數(shù)據(jù)庫的模糊查詢
driver.find_element(By.PARTIAL_LINK_TEXT, '新').click()
# 關(guān)閉瀏覽器
driver.close()

1.6 tag_name 定位

tag_name 定位即通過標(biāo)簽名稱定位,如圖 1.6所示,定位標(biāo)簽“form”并打印標(biāo)簽屬性值“name”。

代碼如下:

driver = webdriver.Firefox()
# 打開百度
driver.get('https://www.baidu.com/')
# tag_name 定位即通過標(biāo)簽名稱定位
print(driver.find_element(By.TAG_NAME, 'form').get_attribute('name'))

成功后控制臺輸出“f”:

1.7 CSS 定位

CSS 定位的優(yōu)點是速度快、語法簡潔。表 1.1 中的內(nèi)容出自 W3School 的 CSS 參考手冊。CSS 定位的選擇器有十幾種,在本節(jié)中主要介紹幾種比較常用的選擇器。

仍以百度搜索框為例,代碼如下:

driver = webdriver.Firefox()
# 打開百度
driver.get('https://www.baidu.com/')
 
#  以class選擇器為例,實現(xiàn)CSS定位,在搜索框輸入“python3”
driver.find_element(By.CSS_SELECTOR, '.s_ipt').send_keys('python3')
 
#  以id定位語法結(jié)構(gòu)為:#加 id 名,實現(xiàn)CSS定位,在搜索框輸入“python3”
driver.find_element(By.CSS_SELECTOR, '#kw').send_keys('python3')
 
# CSS 定位主要利用屬性 class 和 id 進(jìn)行元素定位。也可以利用常規(guī)的標(biāo)簽名稱來定位,如輸入框標(biāo)簽“input”,在標(biāo)簽內(nèi)部又設(shè)置了屬性值為“name='wd'”
driver.find_element(By.CSS_SELECTOR, "input[name='wd']").send_keys('python3')
 
# CSS 定位方式可以使用元素在頁面布局中的絕對路徑來實現(xiàn)元素定位。百度首頁搜索輸入框元素的絕對路
# 徑為“html>body>div>div>div>div>div>form>span>input[name="wd"]”
driver.find_element(By.CSS_SELECTOR, 'html>body>div>div>div>div>div>form>span>input[name="wd"]').send_keys('python3')
 
# CSS 定位也可以使用元素在頁面布局中的相對路徑來實現(xiàn)元素定位。相對路徑的寫法和直接利用標(biāo)簽名稱來定位,兩者
# 的代碼實現(xiàn)的功能是一致的
driver.find_element(By.CSS_SELECTOR, "input[name='wd']").send_keys('python3')
 
# 點擊搜索
driver.find_element(By.ID, 'su').click()
# 關(guān)閉瀏覽器
driver.close()

1.8 XPath 定位

通過 XPath 來定位元素的方式,對比較難以定位的元素來說很有效,幾乎都可以解決,特別是對于有些元素沒有 id、name 等屬性的情況。

XPath 是 XML Path 語言的縮寫,是一種用來確定 XML 文檔中某部分位置的語言。它在 XML 文檔中通過元素名和屬性進(jìn)行搜索,主要用途是在 XML 文檔中尋找節(jié)點。XPath定位比 CSS 定位有更大的靈活性。XPath 可以向前搜索也可以向后搜索,而 CSS 定位只能向前搜索,但是 XPath 定位的速度比 CSS 慢一些。

XPath 語言包含根節(jié)點、元素、屬性、文本、處理指令、命名空間等。以下文本為 XML實例文檔,用于演示 XML 的各種節(jié)點類型,便于理解 XPath。

<?xml version = "1.0" encoding = "utf-8" ?> 
<!-- 這是一個注釋節(jié)點 --> 
<animalList type="mammal"> 
 <animal categoruy = "forest"> 
 <name>Tiger</name> 
 <size>big</size> 
 <action>run</action> 
 </animal> 
</animalList>

其中<animalList>為文檔節(jié)點,也是根節(jié)點;<name>為元素節(jié)點;type=“mammal”為屬性節(jié)點。

節(jié)點之間的關(guān)系:

• 父節(jié)點。每個元素都有一個父節(jié)點,如上面的 XML 示例中,animal 元素是 name、size,以及 action 元素的父節(jié)點。

• 子節(jié)點。與父節(jié)點相反,這里不再贅述。

• 兄弟節(jié)點,有些也叫同胞節(jié)點。它表示擁有相同父節(jié)點的節(jié)點。如上代碼所示,name、size 和 action 元素都是同胞節(jié)點。

• 先輩節(jié)點。它是指某節(jié)點的父節(jié)點,或者父節(jié)點的父節(jié)點,以此類推。如上代碼所示,name 元素節(jié)點的先輩節(jié)點有 animal 和 animalList。

• 后代節(jié)點。它表示某節(jié)點的子節(jié)點、子節(jié)點的子節(jié)點,以此類推。如上代碼所示,animalList 元素節(jié)點的后代節(jié)點有 animal、name 等。

仍以百度搜索框為例,代碼如下:

driver = webdriver.Firefox()
# 打開百度
driver.get('https://www.baidu.com/')
# XPath 有多種定位策略,最簡單直觀的就是寫出元素的絕對路徑。
driver.find_element(By.XPATH, '/html/body/div/div/div/div/div/form/span/input').send_keys('python3')
 
# XPath還可以使用元素的屬性值來定位。//input 表示當(dāng)前頁面某個 input 標(biāo)簽,[@id='kw'] 表示這個元素的 id 值是 kw。
driver.find_element(By.XPATH, "http://input[@id='kw']").send_keys('python3')
 
# 如果一個元素本身沒有可以唯一標(biāo)識這個元素的屬性值,我們可以查找其上一級元素。
# form[@class='fm  has-soutu']通過 class 定位到父元素,后面的/span/input 表示父元素下面的子元素。
driver.find_element(By.XPATH, "http://form[@class='fm  has-soutu']/span/input").send_keys('python3')
 
# 如果一個屬性不能唯一區(qū)分一個元素,那么我們可以使用邏輯運算符連接多個屬性來查找元素
driver.find_element(By.XPATH, "http://input[@id='kw' and @class='s_ipt']").send_keys('python3')
 
# 點擊搜索
driver.find_element(By.ID, 'su').click()
# 關(guān)閉瀏覽器
driver.close()

本章主要介紹了 Selenium 元素的八大定位,每一種定位方式都有其特殊的用法,讀者只要掌握其特殊性即可。需要在項目中多用多想、總結(jié)經(jīng)驗,時間久了會對這些定位方式有更深的理解。

總結(jié)

到此這篇關(guān)于Selenium常見八大定位法總結(jié)的文章就介紹到這了,更多相關(guān)Selenium定位法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)文件/文件夾復(fù)制功能

    Python實現(xiàn)文件/文件夾復(fù)制功能

    在數(shù)據(jù)處理和文件管理的日常工作中,我們經(jīng)常需要復(fù)制文件夾及其子文件夾下的特定文件,手動操作不僅效率低下,而且容易出錯,因此,使用編程語言自動化這一任務(wù)顯得尤為重要,所以本文給大家介紹了使用Python實現(xiàn)文件/文件夾復(fù)制功能,需要的朋友可以參考下
    2025-04-04
  • pytorch中with?torch.no_grad():的用法實例

    pytorch中with?torch.no_grad():的用法實例

    最近在看別人寫的代碼,遇到經(jīng)常使用with torch.no_grad(),所以下面這篇文章主要給大家介紹了關(guān)于pytorch中with?torch.no_grad():用法的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Python讀取mat文件,并保存為pickle格式的方法

    Python讀取mat文件,并保存為pickle格式的方法

    今天小編就為大家分享一篇Python讀取mat文件,并保存為pickle格式的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 深入淺析Python數(shù)據(jù)分析的過程記錄

    深入淺析Python數(shù)據(jù)分析的過程記錄

    我們先利用?Jupyter?Notebook?來進(jìn)行分析,然后,在得到成果以后,利用?Pycharm?來進(jìn)行完整的程序設(shè)計,對Python數(shù)據(jù)分析的過程記錄感興趣的朋友一起看看吧
    2022-01-01
  • python處理yaml文件的操作方法

    python處理yaml文件的操作方法

    yaml文件是一種數(shù)據(jù)序列化語言,廣泛用于配置文件、日志文件、等,本文給大家介紹python處理yaml文件的操作方法,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • Python計算公交發(fā)車時間的完整代碼

    Python計算公交發(fā)車時間的完整代碼

    這篇文章主要介紹了Python計算公交發(fā)車時間的完整代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • 通過python檢測字符串的字母

    通過python檢測字符串的字母

    這篇文章主要介紹了通過python檢測字符串的字母,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • python獲取url的返回信息方法

    python獲取url的返回信息方法

    今天小編就為大家分享一篇python獲取url的返回信息方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 精確查找PHP WEBSHELL木馬的方法(1)

    精確查找PHP WEBSHELL木馬的方法(1)

    今天,我想了下,現(xiàn)在把查找PHP WEBSHELL木馬思路發(fā)出來,需要的朋友可以參考下。
    2011-04-04
  • Python編程在flask中模擬進(jìn)行Restful的CRUD操作

    Python編程在flask中模擬進(jìn)行Restful的CRUD操作

    今天小編就為大家分享一篇關(guān)于Python編程在flask中模擬進(jìn)行Restful的CRUD操作,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評論

广州市| 台州市| 电白县| 章丘市| 志丹县| 扎囊县| 龙南县| 藁城市| 乌什县| 攀枝花市| 大荔县| 轮台县| 天全县| 镇平县| 军事| 和静县| 波密县| 乌兰浩特市| 江达县| 上栗县| 阿克陶县| 黄平县| 那曲县| 墨江| 锡林郭勒盟| 湾仔区| 夏邑县| 耒阳市| 玉屏| 肥西县| 丰城市| 砀山县| 翁牛特旗| 依兰县| 城步| 枣庄市| 梁河县| 康定县| 家居| 康马县| 方城县|