国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python+selenium的web自動化測試之8種元素定位方式詳解

這篇具有很好參考價值的文章主要介紹了python+selenium的web自動化測試之8種元素定位方式詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前言

單一屬性定位

通過元素的id

通過元素的name

通過元素的class

通過元素的標簽名

通過元素的超鏈接文本

通過元素的部分超鏈接文本

XPTH定位

CSS定位

輔助定位工具

前言

? 我們在做WEB自動化時,最根本的就是操作頁面上的各種元素,而操作的基礎(chǔ)便是元素的定位,只有準確地定位到唯一元素才能進行后續(xù)的自動化控制,下面將對各種元素定位方式進行總結(jié)歸納。

? 說明:以下操作統(tǒng)一使用百度首頁<www.baidu.com>進行示例,鼠標右鍵然后點擊檢查(或按f12)可以查看具體的前端代碼。

python+selenium的web自動化測試之8種元素定位方式詳解

單一屬性定位

? 6種單一屬性定位 : id,name,class name,tag name,link,partial_link

??2種多樣式定位:css、xpath(強烈推薦)

通過元素的id

python+selenium的web自動化測試之8種元素定位方式詳解

python
<span style="background-color:#282c34"><span style="color:#abb2bf"><span style="color:#b18eb1"><em># 通過id(id唯一)</em></span>
ele = driver.find_element_by_id(<span style="color:#98c379">"kw"</span>)    <span style="color:#b18eb1"><em># 類 WebElement - 屬性、方法</em></span>
<span style="color:#e6c07b">print</span>(ele.get_attribute(<span style="color:#98c379">'class'</span>))   <span style="color:#b18eb1"><em># 獲取該id的class屬性值</em></span>
ele.send_keys(<span style="color:#98c379">"selenium"</span>)   <span style="color:#b18eb1"><em># 發(fā)送內(nèi)容</em></span></span></span>

? 在前端頁面中,id是指頁面勻速的的屬性名id值,元素的id值在當前整個HTML頁面中是唯一的,因此可以通過id屬性來唯一定位一個元素,是首選的元素定位方式,但不是每個元素都有id屬性。此外,也有動態(tài)變化的id值,即每次進入頁面該元素的id值都不一樣,一般是由一串英文+數(shù)字組成的字符串,這種情況下就不要使用id去定位元素了(因為下一次很有可能就找不到它了)。

通過元素的name

python+selenium的web自動化測試之8種元素定位方式詳解

python
<span style="background-color:#282c34"><span style="color:#abb2bf"><span style="color:#b18eb1"><em># 通過name</em></span>
driver.find_element_by_name(<span style="color:#98c379">"wd"</span>)   <span style="color:#b18eb1"><em># 不一定唯一  # elements</em></span></span></span>

? 元素的name屬性,但name不一定是唯一的,就像大家的身份證號是唯一的,但是名字會有重復(fù)。driver.find_element_by_name只返回第一個匹配到的元素,如果想返回所有匹配到該name的元素,則使用driver.find_elements_by_name,區(qū)別就是element帶不帶s。這里特別說明一下,find_elements不管找到多少個,都會返回 一個list(找不到則返回空列表),列表當中的每一個元素就是一個 WebElement。

通過元素的class

python+selenium的web自動化測試之8種元素定位方式詳解

python
<span style="background-color:#282c34"><span style="color:#abb2bf"><span style="color:#b18eb1"><em># 通過class_name</em></span>
driver.find_element_by_class_name(<span style="color:#98c379">'mnav c-font-normal c-color-t'</span>)   <span style="color:#b18eb1"><em># 不一定唯一,只返回匹配到的第一個元素</em></span>
driver.find_elements_by_class_name(<span style="color:#98c379">'mnav c-font-normal c-color-t'</span>)	<span style="color:#b18eb1"><em># 返回元素列表,按照dom樹從上往下</em></span></span></span>

? 元素的class屬性,在前端,class一般是用來元素進行分組的,并對這一級元素設(shè)置相同的樣式,因此會存在多個元素會共用一個class,不一定是唯一值。與name一樣,elements時返回匹配到的元素列表。

通過元素的標簽名

python+selenium的web自動化測試之8種元素定位方式詳解

python
<span style="background-color:#282c34"><span style="color:#abb2bf"><span style="color:#b18eb1"><em># 通過tag_name</em></span>
driver.find_element_by_tag_name(<span style="color:#98c379">'span'</span>)   <span style="color:#b18eb1"><em># 不唯一   # elements</em></span></span></span>

? tag就是元素的標簽標識,不一定是唯一值,elements時返回匹配到的元素列表。

通過元素的超鏈接文本

python+selenium的web自動化測試之8種元素定位方式詳解

python
<span style="background-color:#282c34"><span style="color:#abb2bf"><span style="color:#b18eb1"><em># 通過link_text</em></span>
driver.find_element_by_link_text(<span style="color:#98c379">'hao123'</span>)	   <span style="color:#b18eb1"><em># 不是唯一   # elements</em></span></span></span>

? 精確匹配鏈接的文本值,不一定是唯一值,elements時返回匹配到的元素列表。

通過元素的部分超鏈接文本

python
<span style="background-color:#282c34"><span style="color:#abb2bf"><span style="color:#b18eb1"><em># 通過partial_link_text</em></span>
driver.find_element_by_partial_link_text(<span style="color:#98c379">'hao'</span>)	   <span style="color:#b18eb1"><em># 不是唯一   # elements</em></span></span></span>

? 模糊匹配鏈接的文本值,elements時返回匹配到的元素列表。

XPTH定位

? 以上介紹的6中定位方式,都是針對元素的單一特征來定位元素,但在實際應(yīng)用中,一般都需要組合以上各種情況來定位一個元素。那么xpath和css定位就可以實現(xiàn)各種組合,基本可以覆蓋所有的元素定位。

? xpath是一門在xml文檔中查找信息的語言,因為html與xml比較相似,用得比較廣泛,所以xpath也可以用于在html對元素進行定位。它是將整個html看成一個樹形結(jié)構(gòu),html為根節(jié)點,頁面當中節(jié)點與其他節(jié)點可以有祖先、父輩、兄弟、這樣的關(guān)系,類似一個族譜。

? selenium提供的xpath定位的方法名:find_element_by_xpath(xpath表達式),表達式語法如下:

表達式 說明
/ 絕對定位,從根節(jié)點選取
// 相對定位,選擇匹配的節(jié)點
. 選擇當前節(jié)點
.. 選擇當前節(jié)點的父節(jié)點
@ 選擇屬性,如:@class="class值",@id="id值",屬性放在中括號[]中
* 通配符,匹配所有
@* 通配符,匹配所有屬性,如:@*="test"
  • 絕對定位(不建議) : /單斜杠開頭,嚴格按照層級、同級元素的位置,只要位置改變就無法定位,如:/html/body/div[2]/[form]/div[1]/input
  • 相對定位://雙斜杠開頭 ,在參照物之下只要符合條件的元素存在即可,表達式://標簽名[@屬性名=值],用*表示要匹配所有標簽 ,如://*[@id="kw"] 匹配所有標簽
  • 下標定位(不建議):路徑下相同標簽的下標,如://*[@id="th"]/a[2],意思是該路徑下第二個a標簽
  • 邏輯運算:表達式中可以使用and 、or 描述元素的多個屬性,表達式://標簽名[@屬性名=值 and @屬性名=值]
  • 層級定位:靠本身特性無法唯一定位的時候,使用層級去定位,如://div[@id="u1"]//a[@name="tj_login"]。/(單斜杠)表示在前一個元素的直系下, //(雙斜杠)表示在前個元素之下的所有范圍內(nèi)
  • 文本定位: 通過標簽內(nèi)的文本內(nèi)容,表達式://標簽名[text()="文本"]
  • 包含(部分屬性):標簽的部分屬性,表達式://標簽名[contains(@屬性名 , "部分屬性值")],如: //a[contains(@href,"Cource/homework")],部分文本也可以,//a[contains(text(), "部分文本")]
  • 軸定位:一般用于表格樣式的數(shù)據(jù)列,需要通過組合來進行定位,軸運算名稱為以下6種,使用語法:/軸名稱::節(jié)點名稱[@屬性=值],例: //div//table//td/preceding::td,只要后面接的是軸定位要用/(單斜杠)。
    • ??ancestor:祖先節(jié)點,父
    • ??parent:父節(jié)點
    • ??preceding:當前元素節(jié)點標簽之前的所有節(jié)點(html頁面先后順序)
    • ??preceding-sibling:當前元素節(jié)點標簽之前的所有兄弟節(jié)點
    • ??following:當前元素節(jié)點標簽之后的所有節(jié)點(html頁面先后順序)
    • ??following-sibling:當前元素節(jié)點標簽之后的所有兄弟節(jié)點
python
<span style="background-color:#282c34"><span style="color:#abb2bf"><span style="color:#f92672">from</span> selenium <span style="color:#f92672">import</span> webdriver
<span style="color:#f92672">import</span> time


driver = webdriver.Chrome()
driver.get(<span style="color:#98c379">"https://www.baidu.com"</span>)

<span style="color:#b18eb1"><em># 定位到輸入框并輸入搜索內(nèi)容</em></span>
driver.find_element_by_xpath(<span style="color:#98c379">"http://input[@id='kw']"</span>).send_keys(<span style="color:#98c379">"selenium"</span>)
<span style="color:#b18eb1"><em># 定位到百度按鈕,并點擊</em></span>
driver.find_element_by_xpath(<span style="color:#98c379">"http://input[@class='btn self-btn bg s_btn']"</span>).click()
time.sleep(<span style="color:#d19a66">5</span>)

<span style="color:#b18eb1"><em># 關(guān)閉瀏覽器</em></span>
driver.quit()</span></span>

CSS定位

? css定位也可以較為靈活地選擇控件的任意屬性,一般情況下定位速度要比xpath要快,但比較復(fù)雜,這里只做簡單介紹。有興趣的可以深入了解。

選擇器 例子 描述
class .intro class選擇器,選擇class="intro"的所有元素
#id #firstname id選擇器,選擇id= " firstname"的所有元素
* * 選擇所有元素
element p 元素所有<p>元素
element > element div > input 選擇父元素為<div>的所有<input> 元素
element + element div + input 選擇同一級中緊接在<div> 元素之后的所有<input> 元素
[attribute= value] [target=_blank] 選擇target="_blank"的所有元素。

? 以百度輸入框和搜索框為例:

  • ?? find_element_by_css_selector(".s_ipt") #通過class屬性定位
  • ?? find_element_by_css_selector("#kw") #通過id屬性
  • ?? find_element_by_css_selector("input") #通過標簽名
  • ?? find_element_by_css_selector("span>input") #通過父子關(guān)系定位,查找span所有標簽名叫input的子元素
  • ?? find_element_by_css_selector("[name='kw']") #通過屬性定位
  • ?? find_element_by_css_selector("span.bg s_ipt_wr>input.s_ipt") #組合定位,父元素是span標簽名,class屬性是.bg s_ipt_wr,有一個子元素,標簽名為input,class屬性是s_ipt

輔助定位工具

? 快捷鍵f12調(diào)出瀏覽器的開發(fā)者工具 —— elements,或通過右擊檢查調(diào)出,以chrome瀏覽器為例,如下圖,點擊左上角箭頭,再用鼠標點擊頁面中想要定位的元素,該元素所在代碼行會高亮顯示,crtl?+?f可以調(diào)出元素查找框,輸入表達式,在輸入框右邊可以看到該表達式定位的元素是否存在且唯一,可以通過組合定位或者更換更具代表性的屬性去保證定位到的元素是唯一的。

python+selenium的web自動化測試之8種元素定位方式詳解

? 在上圖的底部(搜索框?qū)ι弦粰冢?,選中元素后還可以看到元素的路徑,可以用此判斷元素是否在iframe表單中;而如果不確定元素是否在html里,可以利用字符串的元素查找,代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-414823.html

<span style="background-color:#282c34"><span style="color:#abb2bf">test = driver.page_source.find(<span style="color:#98c379">"<p>hello</p>"</span>)
<span style="color:#e6c07b">print</span>(test)	<span style="color:#b18eb1"><em># 返回-1就是不存在</em></span></span></span>
pytho

到了這里,關(guān)于python+selenium的web自動化測試之8種元素定位方式詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【selenium自動化測試】如何定位頁面元素,及對頁面元素的操作方法

    【selenium自動化測試】如何定位頁面元素,及對頁面元素的操作方法

    selenium元素定位 ?selenium定位元素的方式有8種。 fild_element(by,value):by表示使用的定位方式,定位方式可以參見By類。value表示值,例如:根據(jù)id定位 By.ID,value=id屬性的值。該方法返回元素對象,返回值如下: 這個返回結(jié)果說明:返回值為WebElement類的對象,元素在使用方法時

    2024年02月10日
    瀏覽(28)
  • web自動化測試入門篇06 —— 元素定位進階技巧

    web自動化測試入門篇06 —— 元素定位進階技巧

    ? ?? 作者簡介:博主是一位測試管理者,同時也是一名對外企業(yè)兼職講師。 ?? 主頁地址:【Austin_zhai】 ?? 目的與景愿:旨在于能幫助更多的測試行業(yè)人員提升軟硬技能,分享行業(yè)相關(guān)最新信息。 ?? 聲明:博主日常工作較為繁忙,文章會不定期更新,各類行業(yè)或職場問題

    2024年02月05日
    瀏覽(30)
  • 自動化測試學(xué)習(xí)(六)-selenium定位元素之CSS選擇器詳細用法

    自動化測試學(xué)習(xí)(六)-selenium定位元素之CSS選擇器詳細用法

    目錄 1.通過class屬性定位 2.通過id屬性定位 3.通過標簽名定位 4.其他方法定位 ? ?CSS是一種語言,它可以比較靈活的選擇控件的任意屬性,一般情況下比Xpath快,下面我們詳細介紹CSS的用法。CSS常見語法如下表所示:? 選擇器 示例 描述 .class .s_ipt 選擇class=\\\"s_ipt\\\"的所有元素 #i

    2024年01月17日
    瀏覽(23)
  • Selenium元素定位全攻略,讓你輕松玩轉(zhuǎn)自動化測試!

    Selenium元素定位全攻略,讓你輕松玩轉(zhuǎn)自動化測試!

    一、什么是元素定位 元素定位就是查找HTML元素的過程,操作頁面元素之前,首先要對元素進行定位,所以定位是自動化腳本編寫的開始。 通常使用find_element或find_elements方法來定位元素(find_element?使用給定的方法定位和查找一個元素;find_elements?使用給定的方法定位和查找所

    2024年02月04日
    瀏覽(29)
  • Python+selenium自動化元素定位防踩坑

    Python+selenium自動化元素定位防踩坑

    在自動化UI測試過程中常常會在元素定位階段就踩坑,碰到困擾已久的問題。 以下是個人整理元素定位報錯原因和解決方法。 踩坑一:StaleElementReferenceException selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document 異常原因:

    2024年02月06日
    瀏覽(21)
  • 〖Python WEB 自動化測試實戰(zhàn)篇⑦〗- 實戰(zhàn) - selenium的基本元素操作與鍵盤鼠標模擬事件操作

    訂閱 Python全棧白寶書-零基礎(chǔ)入門篇 可報銷! 白嫖入口-請點擊我。 推薦他人訂閱,可獲取扣除平臺費用后的35%收益,文末名片加V! 說明:該文屬于 Python全棧白寶書專欄, 免費階段訂閱數(shù)量4300+ , 購買任意白寶書體系化專欄可加入 TFS-CLUB 私域社區(qū)。 福利:加入社區(qū)的小伙

    2023年04月08日
    瀏覽(33)
  • web自動化測試(java+seleium)元素定位,全屏截圖

    示例 根據(jù)元素的id屬性來定位元素 根據(jù)元素的name屬性來定位元素,但是注意name的屬性值在當前文檔中可以不是唯一的 通過class定位 通過tag進行定位,tag定位比較模糊,多用于標題等特殊標簽 定位超鏈接文本(文本值) 模糊的link_text定位 能夠?qū)崿F(xiàn)路徑定位(絕對路徑,相對路徑

    2024年02月08日
    瀏覽(24)
  • 基于Java+Selenium的WebUI自動化測試框架(一)---頁面元素定位器

    基于Java+Selenium的WebUI自動化測試框架(一)---頁面元素定位器

    ??? 交流討論: 歡迎加入我們一起學(xué)習(xí)! ?? 資源分享 : 耗時200+小時精選的「軟件測試」資料包 ??? 教程推薦: 火遍全網(wǎng)的《軟件測試》教程?? ?? 歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正! 對于自動化測試,尤其是UI的自動化測試。是很多做黑盒功能測試的同

    2024年03月17日
    瀏覽(57)
  • web自動化測試理論之selenium八大定位 -(2)

    web自動化測試理論之selenium八大定位 -(2)

    概念:通過元素的id屬性來定位元素。 前置:所要定位的元素必須有id屬性 方法:driver.find_element_by_id(id屬性值) 概念:通過元素的name屬性來定位元素。 前置:所要定位的元素必須有name屬性。 方法:driver.find_element_by_name(name屬性值) 特點:當前頁面可以重復(fù) 由于name屬性值可以

    2024年02月09日
    瀏覽(29)
  • 無需繁瑣手工操作,如何利用Web自動化測試元素定位做到快速高效的測試?

    在Web自動化測試中,元素定位是非常重要的環(huán)節(jié)。因為我們需要找到需要進行操作的頁面元素,例如按鈕、輸入框、下拉菜單等等。元素定位可以幫助我們在自動化測試中對這些元素進行操作,如點擊、輸入和驗證等。 在華為工作了10年的大佬出的Web自動化測試教程,華為現(xiàn)

    2024年02月05日
    瀏覽(447)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包