一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Selenium定位元素操作示例

Selenium定位元素操作示例

2021-03-27 00:18噴跑的豆子 Python

這篇文章主要介紹了Selenium定位元素操作,結合實例形式總結分析了Selenium通過ID、name、XPath、標簽名稱、類名等進行元素定位操作的相關實現技巧,需要的朋友可以參考下

本文實例講述了Selenium定位元素操作。分享給大家供大家參考,具體如下:

Selenium是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。這個工具的主要功能包括:測試與瀏覽器的兼容性——測試你的應用程序看是否能夠很好得工作在不同瀏覽器和操作系統之上。測試系統功能——創建回歸測試檢驗軟件功能和用戶需求。支持自動錄制動作和自動生成 .Net、Java、Perl等不同語言的測試腳本。

在前面一篇《Selenium基本用法》中簡單記錄了Selenium的使用,接下來記錄一下元素的定位,Selenium提供了多種策略來定位頁面中的元素,Selenium提供了以下方法來定位頁面中元素,你可以根據自己的喜好來進行選擇:

  • find_element_by_id:通過ID進行匹配查找,只返回匹配到的一個元素
  • find_element_by_name:通過name進行匹配查找,只返回匹配到的一個元素
  • find_element_by_xpath:通過xpath進行匹配查找,只返回匹配到的一個元素
  • find_element_by_link_text:通過鏈接內容進行匹配查找,只返回匹配到的一個元素
  • find_element_by_partical_link_text:通過部分鏈接內容進行匹配查找,只返回匹配到的一個元素
  • find_element_by_tag_name:通過標簽名稱進行匹配查找,只返回匹配到的一個元素
  • find_element_by_class_name:通過class名稱進行匹配查找,只返回匹配到的一個元素
  • find_element_by_css_selector:通過CSS選擇器進行匹配查找,只返回匹配到的一個元素

值得注意的是,上面方法只會匹配查找只會獲取第一個元素。除了上面這些查找單個元素的方法之外,Selenium還定義查找多個元素的方法:

  • find_elements_by_name:通過name進行匹配查找,返回所有匹配到的元素列表
  • find_elements_by_xpath:通過xpath進行匹配查找,返回所有匹配到的元素列表
  • find_elements_by_link_text:通過鏈接內容進行匹配查找,返回所有匹配到的元素列表
  • find_elements_by_partical_link_text:通過部分鏈接內容進行匹配查找,返回所有匹配到的元素列表
  • find_elements_by_tag_name:通過標簽名稱進行匹配查找,返回所有匹配到的元素列表
  • find_elements_by_class_name:通過class名稱進行匹配查找,返回所有匹配到的元素列表
  • find_elements_by_css_selector:通過CSS選擇器進行匹配查找,返回所有匹配到的元素列表

除了上面給出的公有方法之外,Selenium還提供了兩種私有方法可能對頁面對象中的定位器有用,這兩個私有方法是:find_elementfind_elements

?
1
2
3
from selenium.webdriver.common.by import By
element = driver.find_element(By.XPATH,'//*[@id="su"]')
elements = driver.find_elements(By.XPATH,'//button')

下面是By可用的屬性:

?
1
2
3
4
5
6
7
8
ID = 'id'
NAME = 'name'
XPATH = 'xpath'
LINK_TEXT = '鏈接內容'
PARTIAL_LINK_TEXT = '部分鏈接內容'
TAG_NAME = '標簽名稱'
CLASS_NAME = '類名'
CSS_SELECTOR = 'CSS選擇器'

通過ID定位

當你知道元素的ID屬性時,你可以使用它,使用此策略,將返回ID屬性值與該匹配的第一個元素。如果沒有元素匹配到此ID屬性,將會引發NoSuchElementException錯誤,舉個栗子,有這樣一個數據源:

?
1
<input id="login_id" type="text"/>

我們知道了這個元素的ID,我們可以這樣進行定位:

?
1
element = driver.find_element_by_id('login_id')

通過name定位

當你知道元素的name屬性時,你可以使用它,使用此策略,將返回name屬性值與該匹配的第一個元素。如果沒有元素匹配到此name屬性,將會引發NoSuchElementException錯誤,舉個栗子,有這樣一個數據源:

?
1
<input name="login" type="text"/>

我們知道了這個元素的name,我們可以這樣進行定位:

?
1
element = driver.find_element_by_name('login')

通過XPath定位

XPath是用于在XML文檔中查找節點的語言,由于XML可以是HTML的實現,因此Selenium用戶可以利用這種強大的語言來定位其Web應用程序中的元素。XPath擴展了通過id和name屬性定位的簡單方法,并打開了各種新的可能性,例如在頁面中查找第三個復選框。舉個栗子,有這樣一個數據源:

?
1
2
3
4
5
6
7
8
9
10
<html>
 <body>
 <form id="loginForm">
  <input name="username" type="text" />
  <input name="password" type="password" />
  <input name="continue" type="submit" value="Login" />
  <input name="continue" type="button" value="Clear" />
 </form>
</body>
<html>

我們可以這樣進行定位:

?
1
user_element = driver.find_element_by_xpath("/html/body/form/input[@name='username']")

或者

?
1
user_element = driver.find_element_by_xpath("/html/body/form/input")

或者

?
1
user_element = driver.find_element_by_xpath('//input[1]')

或者

?
1
user_element = driver.find_element_by_xpath("//input[@name='username'][@type='text']")

通過鏈接內容定位

當你知道鏈接元素的內容時,你可以使用它,使用此策略,將返回鏈接內容與該匹配到的第一個元素。如果沒有元素匹配到此鏈接內容,將會引發NoSuchElementException錯誤,舉個栗子,有這樣一個數據源:

?
1
2
3
4
5
6
7
<html>
 <body>
 <p>Are you sure you want to do this?</p>
 <a href="continue.html" rel="external nofollow" rel="external nofollow" >Continue</a>
 <a href="cancel.html" rel="external nofollow" >Cancel</a>
</body>
<html>

其中<a href="continue.html" rel="external nofollow" rel="external nofollow" >Continue</a>元素可以這樣定位:

?
1
element = driver.find_element_by_link_text('Continue')

或者

?
1
element = driver.find_element_by_partical_link_text('Con')

通過標簽名稱定位

當你知道標簽的名稱時,你可以使用它,使用此策略,將返回標簽名稱與該匹配到的第一個元素。如果沒有元素匹配到此標簽名稱時,將會引發NoSuchElementException錯誤,舉個栗子,有這樣一個數據源:

?
1
2
3
4
5
6
<html>
 <body>
 <h1>Welcome</h1>
 <p>Site content goes here.</p>
</body>
<html>

我們可以這樣對<p>元素進行定位:

?
1
element = driver.find_element_by_tag_name("p")

通過類名進行定位

當你知道類名的時候,你可以使用它,使用此策略,將返回類名與該匹配到的第一個元素。如果沒有元素匹配到此類名稱時,將會引發NoSuchElementException錯誤,舉個栗子,有這樣一個數據源:

?
1
2
3
4
5
<html>
 <body>
 <p class="content">Site content goes here.</p>
</body>
<html>

我們可以這樣對<p>元素進行定位:

?
1
element = driver.find_element_by_class_name('content')

通過CSS選擇器進行定位

當你想通過CSS選擇器語法找到一個元素時,你可以使用它,使用此策略,將返回匹配CSS選擇器的第一個元素。如果沒有元素匹配到此CSS選擇器時,將會引發NoSuchElementException錯誤,舉個栗子,有這樣一個數據源:

?
1
2
3
4
5
<html>
 <body>
 <p class="content">Site content goes here.</p>
</body>
<html>

我們可以這樣對<p>元素進行定位:

?
1
element = driver.find_element_by_css_selector('body p')

希望本文所述對大家Python程序設計有所幫助。

原文鏈接:https://blog.csdn.net/y472360651/article/details/79659968

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 短篇最污的乱淫伦小说全集 | 精品日韩欧美一区二区三区 | 成人一区二区免费中文字幕 | 午夜福利院电影 | h杯奶水太多h | 极品主播的慰在线播放 | 日韩综合第一页 | 久草草在线视视频 | 俄罗斯引擎首页进入 | 成年人免费看的视频 | 98精品全国免费观看视频 | 武侠古典久久亚洲精品 | 四虎永久在线精品国产 | 欧美大b | 欧美kkk4444在线观看 | 日韩一区二区三区精品 | 日本不卡一区二区三区在线观看 | 亚欧综合 | 国产一区二区在线免费观看 | 精品91自产拍在线 | 久久青青草原综合伊人 | 窝窝午夜精品一区二区 | 免费一区在线观看 | 国产一二区视频 | 日本高清中文 | 包臀裙女教师波多野结衣 | sss在线观看免费视频 | 国产特黄一级一片免费 | 草莓视频首页 | 娇女的呻吟亲女禁忌h16 | 福利视频免费 | 精彩国产萝视频在线 | hd性欧美俱乐部中文 | 日韩不卡一区二区三区 | 波多野结衣快播 | 日韩欧美高清视频 | 69pao强力打造免费高速 | 欧美区在线 | a亚洲天堂| 国产美女屁股直流白浆视频无遮挡 | 国产一级真人毛爱做毛片 |