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

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

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

web自動化測試理論之selenium八大定位

一、ID定位

概念:通過元素的id屬性來定位元素。

前置:所要定位的元素必須有id屬性

方法:driver.find_element_by_id(id屬性值)

"""
    需求:
        打開注冊A.html頁面,完成以下操作
        1).使用id定位,輸入用戶名:admin
        2).使用id定位,輸入密碼:123456
        3).3秒后關閉瀏覽器窗口
"""
# 導包
from time import sleep
from selenium import webdriver

# 創(chuàng)建瀏覽器驅動
driver = webdriver.Chrome()
# 打開測試網(wǎng)址
driver.get('file:///C:/Users/Desktop/UITest/%E6%B3%A8%E5%86%8CA.html')
# 定位元素,調用模擬操作方法
driver.find_element_by_id('userA').send_keys('admin')
driver.find_element_by_id('passwordA').send_keys('123456')
# 暫停3秒看效果
sleep(3)
# 操作完畢關閉瀏覽器
driver.quit()

二、Name定位

概念:通過元素的name屬性來定位元素。

前置:所要定位的元素必須有name屬性。

方法:driver.find_element_by_name(name屬性值)

特點:當前頁面可以重復

由于name屬性值可以重復,所以使?時需要查看是否為唯?

# 定位元素,調用模擬操作方法
driver.find_element_by_name('userA').send_keys('admin')
driver.find_element_by_name('passwordA').send_keys('123456')

三、class_name 定位

概念:通過元素的class_name屬性來定位元素。

前置:所要定位的元素必須有class類名屬性。

方法:driver.find_element_by_class_name(class屬性值)

特點: class屬性值可以有多個值

說明:如果標簽有多個class值,使?任何?個都可以。如:c1

<p>
	<label for="emailA">電子郵件A:</label>
	<input type="emailA" placeholder="電子郵箱A"  class="c1 c2 c3">				
</p>
# 定位元素,調用模擬操作方法
driver.find_element_by_class_name('telA').send_keys('18611111111')
driver.find_element_by_class_name('c1').send_keys('123@qq.com')

四、Tag_name 定位?

概念:通過元素的標簽名來定位元素。

?方法:driver.find_element_by_tag_name(標簽名)

特點:重復性高,不建議使用?

提示: 如果??存在多個相同標簽,默認返回第?個。

# 定位元素,調用模擬操作方法
# 使用標簽名定位確認符合條件的元素是第幾個?如果需要獲取所有的相同標簽,使用查找一組元素的方法
driver.find_element_by_tag_name('input').send_keys('admin')

五、link_text 定位

概念:專門用來定位超鏈接元素(<a></a>標簽)

方法:driver.find_element_by_link_text(超鏈接的全部文本內容)

特點: 傳?的鏈接?本,必須全部匹配,不能模糊

提示:獲取要定位超鏈接文本類容,用拷貝的形式,定位元素

# 定位元素,調用模擬操作方法
driver.find_element_by_link_text('訪問 新浪 網(wǎng)站').click()

使用link_text定位圖片標記的元素會有什么問題?

代碼過長

定位不到

六、partial_link_text 定位

概念:使用局部文本來定位元素:

局部文本:

方法:driver.find_element_by_partial_link_text(超鏈接的局部文本內容)

從字符串任意位置開始,一截連續(xù)字符集。

提示:獲取要定位超鏈接文本部分類容(能表示該元素唯一性),用拷貝的形式,定位元素

# 定位元素,調用模擬操作方法
# # 獲取要定位超鏈接文本部分類容(能表示該元素唯一性),用拷貝的形式,定位元素
driver.find_element_by_partial_link_text('新浪').click()

擴展- 查找一組元素

含義:定位所有符合條件的元素

Return:返回的數(shù)據(jù)為所有符合條件的元素對象的列表

說明:返回列表格式,要使?需要添加下標或遍歷。

?法: driver.find_elements_by_xxxx()

提示: ??元素定位?法,都可以使??組元素定位,如果沒有搜索到符合標簽,返回空列表

在定位元素時,如果出現(xiàn)下面的問題:

1、定位到多個符合條件的元素

2、且所需元素定位元素不是第一個

如何從返回的列表中取某一個的元素對象?

定位符合條件的一組元素后,通過下標取指定的元素對象。

# 需求:使用定位一組元素的方法 driver.find_elements_by_tag_name()將注冊A的信息進行填寫
# 查找所有的input標簽
inputs = driver.find_elements_by_tag_name('input')
inputs[0].send_keys('admin')
inputs[1].send_keys('123456')
inputs[2].send_keys('18611111111')
inputs[3].send_keys('123@qq.com')


# 動態(tài)填寫值
for i in inputs:
    if i.get_attribute('name') == 'userA':
        i.send_keys('admin')
    elif i.get_attribute('type') == 'password':
        i.send_keys('123456')
    elif i.get_attribute('id') == 'telA':
        i.send_keys('18611111111')
    else:
        i.send_keys('123@qq.com')

在定位元素時,可以利用:

元素自身的信息:id、name、class、tag_name、文本,所有屬性都可以來定位

元素的層級關系:xpath定位、css定位

七、Xpath定位

概念;XML Path簡稱,用于在XML文檔中查找元素信息的語言。

方法:driver.find_element_by_xpath(xpath表達式)

XML特點:

1、層級結構

2、都有標簽組成

3、標簽都有自己屬性信息

Xpath定位策略(方法):

路徑定位

屬性定位

屬性與邏輯結合

層級與屬性結合

1、Xpath定位-路徑定位

絕對路徑

概念:從最外層元素到指定元素之間所有經(jīng)過的元素層級的路徑。 (從根?錄開始,逐級查找標簽)

表達式寫法:對路徑以/html根節(jié)點開始,使用 / 來分隔元素層級。

如:/html/body/form/div/fieldset/center/p[1]/input? 定位賬號A的輸入框

絕對路徑對界面依賴強,不建議使用

相對路徑:

概念:從目標定位元素的任意層級的上級元素開始到目標元素所經(jīng)過的層級的路徑。

表達式寫法:以//開始,后續(xù)每個層級都使用/來分隔。

如://fieldset//p[1]//input? ? 或者//fieldset//p[1]/input 定位賬號A的輸入框

# 絕對路徑
el = driver.find_element_by_xpath('/html/body/form/div/fieldset/center/p[1]/input')
el.send_keys('admin')
sleep(2)
# 清除元素
el.clear()
# 相對路徑
driver.find_element_by_xpath('//fieldset//p[1]//input').send_keys('123')

2、Xpath定位-屬性定位

概念:利用元素的屬性來進行定位。

示例:

//input[@type='submit']

//*[@value='提交']

元素的屬性有很多,挑選哪個屬性來定位呢?

挑選元素所特有的

挑選較為常用的:id、name、class、value......

總之:盡量挑選能精準定位到唯一元素的屬性

#  利用元素的屬性信息精準定位用戶名輸入框,并輸入:admin
el = driver.find_element_by_xpath('//input[@placeholder="賬號A"]').send_keys('admin')

3、Xpath定位-屬性與邏輯結合

概念:利用元素的多個屬性來進行定位。

示例://input[@value='提交' and @class='banana']

利用單個屬性信息定位不到元素了。

# 利用屬性與邏輯結合在test1輸入框輸入:admin
driver.find_element_by_xpath('//input[@class="login" and @name="user"]').send_keys('admin')

單屬性: //*[@屬性名='屬性值']

多屬性: //*[@屬性名='屬性值' and @屬性名='屬性值']

提示:可以使?任何屬性。

4、Xpath定位-屬性與層級結合

利用多個屬性信息定位不到元素了。

利用層級與屬性結合在test1輸入框輸入:admin

# 利用層級與屬性結合在用戶名輸入框輸入:admin
# 層級和屬性結合
driver.find_element_by_xpath('//p[@id="p1"]/input').send_keys('admin')

說明: 如果元素現(xiàn)有的屬性不能唯?匹配,需要結合層級使?

語法:

//?標簽/?標簽? ? ? ?必須為直屬?級

//?標簽[@屬性='值']//后代標簽? ? ? ?和后代之間可以跨越元素

5、Xpath定位 -- 延伸擴展

text()='xxx' 、contains(@attribute,'xxx')? ?、starts-with(@attribute,'xxx')

//*[text()="xxx"]? ? ? ? ? ?文本內容是xxx的元素

//*[contains(@attribute,'xxx')]? ? 屬性中含有xxx的元素

//*[starts-with(@attribute,'xxx')]? ? 屬性以xxx開頭的元素

driver.find_element_by_xpath('//*[contains(@placeholder,"賬號")]').send_keys('admin')

sleep(2)
driver.find_element_by_xpath('//a[text()="訪問 新浪 網(wǎng)站"]').click()
driver.find_element_by_xpath('//a[starts-with(@href,"http")]').click()

xpath綜合練習

"""
     1. 打開Tpshop首頁;
     2. 使用 Xpath 文本定位策略定位登陸超鏈接,并點擊;
     3. 使用 Xpath 屬性定位策略定位用戶名輸入框,輸入:15800000001;
     4. 使用 Xpath 屬性包含定位策略定位密碼輸入框,輸入:123456;
     5. 使用 Xpath 屬性與邏輯結合策略定位驗證碼輸入框,輸入:8888;
     6. 使用 Xpath 層級與屬性結合策略定位登陸按鈕,并點擊;
     每步操作之后暫停2s
"""

# 1、導包
from time import sleep
from selenium import webdriver

# 2、實例化瀏覽器對象
driver = webdriver.Chrome()

# 3、打開瀏覽器
driver.get('http://tpshop-test.itheima.net/')
driver.find_element_by_xpath('//*[text()="登錄"]').click()
driver.find_element_by_xpath('//*[@placeholder="手機號/郵箱"]').send_keys('15800000001')
driver.find_element_by_xpath('//*[contains(@placeholder,"密碼")]').send_keys('123456')
driver.find_element_by_xpath('//input[@placeholder="驗證碼" and  @name="verify_code"]').send_keys('8888')
driver.find_element_by_xpath('//*[@class="login_bnt"]/a').click()
# 4、觀察對象
sleep(2)

# 5、關閉瀏覽器
driver.quit()

八、CSS定位?

css概念:(Cascading Style Sheets)是一種語言,用來描述HTML 元素的顯示樣式。?

css選擇器:一種表達式,可以找到HTML中的標簽元素。

CSS定位概念:selenium利用選擇器定位元素的定位方式。

CSS定位方法:driver.find_element_by_css_selector(選擇器表達式)?

特點:

速度更快

?寫法更簡潔?

策略(方法):

ID選擇器

類選擇器

元素選擇器

屬性選擇器

層級選擇器?

"""
    使用css定位完成下面操作
    需求:打開注冊A.html頁面,完成以下操作
        1).使用CSS定位方式中id選擇器定位用戶名輸入框,并輸入:admin 
        2).使用CSS定位方式中屬性選擇器定位密碼輸入框,并輸入:123456 
        3).使用CSS定位方式中class選擇器定位電話號碼輸入框,并輸入:18600000000 
        4).使用CSS定位方式中元素選擇器定位注冊按鈕,并點擊
"""

# ?戶名 id選擇->#id屬性值
driver.find_element_by_css_selector('#userA').send_keys('admin')
# 密碼 屬性選擇器->[屬性名='屬性值']
driver.find_element_by_css_selector('[name="passwordA"]').send_keys('123456')
# 電話 類選擇器->.class屬性值
driver.find_element_by_css_selector('.telA').send_keys('18600000000')
# 電子郵件   后代選擇器
driver.find_element_by_css_selector('p>#emailA').send_keys('123@qq.com')
sleep(2)
# 確定 標簽選擇器-標簽名
driver.find_element_by_css_selector('button').click()

1、CSS定位? -?ID選擇器

說明:利用元素ID屬性來選擇?

格式:#id屬性值

前置: 標簽必須id屬性

2? ?CSS定位? -? 類選擇器

說明:利用元素class屬性值來選擇?

格式:.class屬性值

前置: 標簽必須class屬性

3、CSS定位? -?元素選擇器 / 標簽選擇器

語法: 標簽名

提示: 注意標簽是否在??中唯?,否則返回單個或所有

4、CSS定位? -??屬性選擇器

語法: [屬性名='屬性值']

說明: 標簽任意屬性都可以

5、CSS定位? -? 層級選擇器

后代關系包含了父子關系,一般只需記憶后代關系即可

父子關系:

概念:根據(jù)元素的父子關系來選擇元素

表達式寫法:element1>element2

如:p[id="p1"]>input

??關系: 選擇器>選擇器 如: #p1>input

后代關系:

后代關系: 選擇器 選擇器 如: #p1 input

選擇器使?任何?種css選擇器(id選擇器、類選擇器、屬性選擇器、標簽選 擇器)都可以

概念:根據(jù)元素的上級元素來選擇元素(只要是目標元素上層元素即可)

表達式寫法:element1 element2? ? ?注意中間有空格

如:p[id="p1"] input

案例:使用CSS定位方式中的層級選擇器定 位用戶名輸入框,并輸入:admin

# 使用CSS定位方式中的層級選擇器定位用戶名輸入框,并輸入:admin
# 后代關系   中間用空格隔開
driver.find_element_by_css_selector('p[id="p1"] input').send_keys('admin')

6、css定位 - 延伸擴展

利用局部屬性值定位元素

tagName[attribute*='局部屬性值']

標簽名[屬性=‘局部屬性值’]

# 利用局部屬性定位方式定位用戶名輸入框輸入:admin
driver.find_element_by_css_selector('input[placeholder*="賬號"]').send_keys('admin')

注意:在帶有屬性值的時候,注意單引號、多引號的合理使用,外單(單引號)內雙(雙引號)

查找元素:find_element()

方法:driver.find_element(by=By.所要選擇定位方式的類屬性,value=所選擇定位方式所要求的值)

為了查找元素?法的封裝

from selenium.webdriver.common.by import By


"""
    需求:打開注冊A.html頁面,完成以下操作
    1).使用id定位用戶名輸入框,并輸入:admin 
    2).使用name定位密碼輸入框,并輸入:123456 
    3).使用class定位電話號碼輸入框,并輸入:18600000000 
    4).使用標簽名定位注冊按鈕,并點擊
"""
driver.find_element(By.ID, 'userA').send_keys('admin')
driver.find_element(By.NAME, 'passwordA').send_keys('123456')
driver.find_element(By.CLASS_NAME, 'telA').send_keys('18600000000')
sleep(2)
driver.find_element(By.TAG_NAME, 'button').click()

八大元素定位方式總結

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

結論:

1、?推css定位,原因執(zhí)?速度快。

????????①如果有ID屬性,使?#id

????????②沒有id屬性,使?其他有的屬性(能代表唯?的屬性)

????????③如果屬性都帶不了唯?,使?層級

2、如果css解決不了,使?xpath。

元素操作

元素=driver.find_element()

點擊:

元素.click()

輸?:元素.send_keys(內容)

清空:元素.clear()

# 3、查找操作元素
driver.find_element(By.CSS_SELECTOR, "#userA").send_keys("admin")
driver.find_element(By.CSS_SELECTOR, "[name='passwordA']").send_keys("123456")
driver.find_element(By.CSS_SELECTOR, ".telA").send_keys("18611111111")
driver.find_element(By.CSS_SELECTOR, "[placeholder*='郵箱']").send_keys("123@qq.com")
# 修改電話
sleep(3)
driver.find_element(By.CSS_SELECTOR, ".telA").clear()
driver.find_element(By.CSS_SELECTOR, ".telA").send_keys("18600000000")
sleep(3)
# 點擊注冊
driver.find_element(By.CSS_SELECTOR, "button").click()

元素獲取方法:

獲取??: 元素.size

獲取?本: 元素.text

獲取屬性: 元素.get_attribute('屬性名')

判斷元素是否可?: 元素.is_displayed()

判斷元素是否可?: 元素.is_enabled()

判斷元素是否選中: 元素.is_selected()文章來源地址http://www.zghlxwxcb.cn/news/detail-484922.html

# 獲取?? 元素.size
user = driver.find_element(By.CSS_SELECTOR,"#userA").size
print("?戶名輸?框的??:",user)
# 獲取內容 元素.text
a_text = driver.find_element(By.TAG_NAME,"a").text
print("第?個a標簽的?本:",a_text)
# 獲取屬性 超連接地址
a_href = driver.find_element(By.TAG_NAME,"a").get_attribute("href")
print("第?個a標簽的鏈接:",a_href)
# 判斷span標簽是否可? 元素.is_displayed
span = driver.find_element(By.TAG_NAME,"span").is_displayed()
print("span是否可?:",span)
# 判斷取消按鈕是否可? is_enabled
btn_is_enabled = driver.find_element(By.CSS_SELECTOR,"#cancelA").is_enabled()
print("取消按鈕是否可?:",btn_is_enabled)
# 旅游是否選中 is_selected
is_selected = driver.find_element(By.CSS_SELECTOR,"#lyA").is_selected()
print("旅游是否被選中:",is_selected)

到了這里,關于web自動化測試理論之selenium八大定位 -(2)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • Python+selenium自動化八大元素定位方法及實例(超詳細)

    Python+selenium自動化八大元素定位方法及實例(超詳細)

    目錄 一、selenium模塊中的find_element_by_id方法無法使用 二、Python+selenium自動化八大元素定位方法 使用場景: 1、通過id屬性定位:driver.find_element(By.ID,\\\"value\\\") 2、通過name屬性定位:driver.find_element(By.NAME,\\\"value\\\") 3、通過class屬性定位:driver.find_element(By.CLASS_NAME,\\\"value\\\") 4、通過tag_name屬

    2024年02月19日
    瀏覽(25)
  • python+selenium的web自動化測試之8種元素定位方式詳解

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

    目錄 前言 單一屬性定位 通過元素的id 通過元素的name 通過元素的class 通過元素的標簽名 通過元素的超鏈接文本 通過元素的部分超鏈接文本 XPTH定位 CSS定位 輔助定位工具 ? 我們在做WEB自動化時,最根本的就是操作頁面上的各種元素,而操作的基礎便是元素的定位,只有準確

    2023年04月16日
    瀏覽(100)
  • 自動化測試(二)selenium八大獲取元素方法及對象操作

    目錄 webdriver API 腳本實例 元素的定位 1. 通過id定位: 2. 通過name方式定位 3. 通過tag name(標簽名)定位 4. 通過class name (類名)方式定位 5.?通過CSS 方式定位 6.?通過xpath方式定位 7.?link text定位 8. Partial link text 定位 操作測試對象 ?鼠標點擊與鍵盤輸入 submit 提交表單 text 獲取

    2024年02月03日
    瀏覽(60)
  • 自動化測試——selenium之JS定位

    在自動化測試中,我們常用的元素定位方式有id,name,class_name,xpath,css_selector,link_text 還有不常用的tag_name,partial_link_text 其實還有js定位方法及jquery定位方法 一、js定位方法(注意書寫格式及以分號結尾): 1.根據(jù)id定位 document.getElementById(\\\"id值\\\").操作方式; 2.根據(jù)ClassName定

    2023年04月27日
    瀏覽(20)
  • Web自動化 —— Selenium元素定位與防踩坑

    Web自動化 —— Selenium元素定位與防踩坑

    2. 基本元素定位二 3. CSS選擇器定位法一 4. CSS選擇器定位法二 瀏覽器完整的打開-關閉調用流程 5. xpath定位法 1、相對路徑定位 //標簽名[@屬性名=\\\"屬性值\\\"] 2、定位某個元素的父級元素 元素xpath/parent::\\\"父級元素標簽名\\\" //*[@id=\\\"list\\\"]/dl/a/parent::dl 3、定位一組元素的第幾個 xpath[數(shù)字

    2024年02月09日
    瀏覽(31)
  • Web自動化測試——XAPTH高級定位

    Web自動化測試——XAPTH高級定位

    XPath 是一門在 XML 文檔中查找信息的語言 XPath 使用路徑表達式在 XML 文檔中進行導航 XPath 的應用非常廣泛 XPath 可以應用在UI自動化測試 web自動化測試 app自動化測試 可維護性更強 語法更加簡潔 相比于css可以支持更多的方式 瀏覽器-console $x(\\\"xpath表達式\\\") 瀏覽器-elements ctrl+f 輸

    2024年02月03日
    瀏覽(22)
  • java+selenium自動化測試之8大常用定位方法

    java+selenium自動化測試之8大常用定位方法

    定位元素:Selenium能夠模擬用戶去瀏覽器頁面上執(zhí)行對應(輸入,點擊,清除,提交)等操作,它是憑什么方式去尋找到頁面的元素?Selenium沒有視覺、聽覺等。Selenium通過在頁面上尋找元素位置,找到元素后,然后對元素進行相應的操作,Selenium尋找元素位置的方法,稱之為

    2024年04月27日
    瀏覽(26)
  • python自動化測試selenium定位frame及iframe示例

    python自動化測試selenium定位frame及iframe示例

    這篇文章主要為大家介紹了python自動化測試selenium定位frame及iframe示例的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助 frame標簽有frameset、frame、iframe三種,frameset和其它普通標簽沒有區(qū)別,不會影響正常定位,而frame與iframe對selenium定位而言是一樣的。 Selenium有

    2024年01月20日
    瀏覽(26)
  • web自動化系列-selenium find_elements定位方法詳解(八)

    web自動化系列-selenium find_elements定位方法詳解(八)

    接上文 : web自動化測試系列-selenium css_selector定位方法詳解(七)-CSDN博客 前面已經(jīng)介紹了8種定位方法 ,大多數(shù)情況下我們都會優(yōu)先使用這8種方法 。 但有的時候在你選擇定位元素時 ,會出現(xiàn)多個同樣的定位屬性和值 。而且你能選擇定位也就這一種情況 。這種情況你只能使用

    2024年04月16日
    瀏覽(26)
  • 自動化測試之web自動化(Selenium)

    自動化測試之web自動化(Selenium)

    ??? 交流討論: 歡迎加入我們一起學習! ?? 資源分享 : 耗時200+小時精選的「軟件測試」資料包 ??? 教程推薦: 火遍全網(wǎng)的《軟件測試》教程?? ?? 歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正! yycnblog 自動化測試概念:讓程序代替人為去驗證程序功能的過程,本

    2024年03月15日
    瀏覽(46)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包