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

Selenium元素定位——八大方法詳述

這篇具有很好參考價(jià)值的文章主要介紹了Selenium元素定位——八大方法詳述。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、元素的概念

元素:由標(biāo)簽頭 + 標(biāo)簽尾 + 標(biāo)簽頭和標(biāo)簽尾包括的文本內(nèi)容;

元素的信息就是指元素的標(biāo)簽名及元素的屬性;

元素的層級(jí)結(jié)構(gòu)就是指元素之間相互嵌套的層級(jí)結(jié)構(gòu);

元素定位最終就是通過(guò)元素的信息或者元素的層級(jí)結(jié)構(gòu)來(lái)進(jìn)行元素定位;

二、元素定位方法

webdriver 提供了一系列的對(duì)象定位方法,常用的有以下8種:

定位一個(gè)元素 定位多個(gè)元素 含義
find_element(By.ID,value) find_elements(By.ID,value) 通過(guò)元素id定位
find_element(By.NAME,value) find_elements(By.NAME,value) 通過(guò)元素name定位
find_element(By.XPATH,value) find_elements(By.XPATH,value) 通過(guò)xpath表達(dá)式定位
find_element(By.LINK_TEXT,value) find_elements(By.LINK_TEXT,value) 通過(guò)完整超鏈接定位
find_element(By.PARTIAL_LINK_TEXT,value) find_elements(By.PARTIAL_LINK_TEXT,value) 通過(guò)部分鏈接定位
find_element(By.TAG_NAME,value) find_elements(By.TAG_NAME,value) 通過(guò)標(biāo)簽定位
find_element(By.CLASS_NAME,value) find_elements(By.CLASS_NAME,value) 通過(guò)類名進(jìn)行定位
find_element(By.CSS_SELECTOR,value) find_elements(By.CSS_SELECTOR,value) 通過(guò)css選擇器進(jìn)行定位

(一)根據(jù)id定位

在HTML當(dāng)中,id屬性是唯一標(biāo)識(shí)一個(gè)元素的屬性,因此在selenium當(dāng)中,通過(guò)id來(lái)進(jìn)行元素的定位也較為常用。
百度搜索框的元素如圖所示:
Selenium元素定位——八大方法詳述
百度搜索框元素html結(jié)構(gòu):

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

元素定位(下面有代碼詳細(xì),此處僅簡(jiǎn)單展示方法):

element = web.find_element(By.ID, "kw") 

(二)根據(jù)name定位

在HTML當(dāng)中,name屬性和id屬性的功能基本相同,只是name屬性并不是唯一的,如果遇到?jīng)]有id標(biāo)簽的時(shí)候,我們可以考慮通過(guò)name標(biāo)簽來(lái)進(jìn)行定位。

百度搜索框元素html結(jié)構(gòu):

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

元素定位(下面有代碼詳細(xì),此處僅簡(jiǎn)單展示方法):

element = web.find_elements(By.NAME,"wd")   

(三)根據(jù)class name定位

我們也可以基于class屬性來(lái)定位元素。通常當(dāng)我們看到有多個(gè)并列的元素如list表單,class用的都是共用同一個(gè)。

百度搜索框元素html結(jié)構(gòu):

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

元素定位(下面有代碼詳細(xì),此處僅簡(jiǎn)單展示方法):

element = web.find_element(By.CLASS_NAME,"s_ipt")  

(四)根據(jù)tag定位

HTML是通過(guò)tag來(lái)定義一類功能的,比如input是輸入,table是表格,tbody是表格主體等。每個(gè)元素其實(shí)就是一個(gè)tag,由于一個(gè)tag用來(lái)定義一類功能,一個(gè)網(wǎng)頁(yè)往往有很多同類tag,所以很難通過(guò)tag去區(qū)分不同的元素。
Selenium元素定位——八大方法詳述
百度搜索框元素html結(jié)構(gòu):

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

元素定位(下面有代碼詳細(xì),此處僅簡(jiǎn)單展示方法):

element = web.find_elements(By.TAG_NAME,"input")

由于百度首頁(yè)有很多標(biāo)簽名字都是”input",因此上述代碼只會(huì)定位到網(wǎng)頁(yè)的第一個(gè)“input”標(biāo)簽。

(五)根據(jù)link text定位

通過(guò)超鏈接的文本定位元素。

百度上方超鏈接”新聞“元素如圖所示:
Selenium元素定位——八大方法詳述
百度上方超鏈接”新聞“元素元素html結(jié)構(gòu):

<a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新聞</a>

元素定位(下面有代碼詳細(xì),此處僅簡(jiǎn)單展示方法):

element = web.find_element(By.LINK_TEXT,"新聞")

(六)根據(jù)partial link text定位

有時(shí)候一個(gè)超鏈接的文本很長(zhǎng),我們?nèi)绻枯斎?,既麻煩,又顯得代碼很不美觀,這時(shí)候我們就可以只截取一部分字符串,進(jìn)行模糊匹配。

百度上方超鏈接”新聞“元素html結(jié)構(gòu):

<a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新聞</a>

元素定位(下面有代碼詳細(xì),此處僅簡(jiǎn)單展示方法):

element = web.find_element(By.LINK_TEXT,"新")

(七)根據(jù)XPath定位

Xpath是一種在XML和HTML文檔中查找信息的語(yǔ)言,通過(guò)Xpath路徑來(lái)定位元素的時(shí)候也是分絕對(duì)路徑和相對(duì)路徑。
XPath比較復(fù)雜,但十分好用,具體可看小編的另一篇文章:
百度搜索框元素html結(jié)構(gòu):

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

xpath定位表達(dá)式

//*[@id="kw"]

Python通過(guò)xpath定位語(yǔ)句

element = web.find_element(By.XPATH,'//*[@id="kw"]')

(八)根據(jù)css selector定位

css selector可以通過(guò)很多方式定位元素
ID:

element = web.find_element(By.CSS_SELECTOR,"#kw")

class name:

element = web.find_element(By.CLASS_NAME,"s_ipt")

屬性選擇器
根據(jù)標(biāo)簽中的屬性來(lái)定位元素, 格式: [屬性名=”屬性值”],或標(biāo)簽名[屬性名=屬性值]。如果屬性是唯一的,那么標(biāo)簽名可以不用寫(xiě)。

百度搜索框元素html結(jié)構(gòu):

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

元素定位:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-461728.html

element = web.find_element_by_css_selector('[id="kw"]') 
element = web.find_element_by_css_selector('input[id="kw"]') 

三、代碼示例

"""
元素定位:
    ID = "id"                                   通過(guò)id元素定位
    XPATH = "xpath"                             通過(guò)xpath定位
    LINK_TEXT = "link text"                     通過(guò)鏈接文本定位
    PARTIAL_LINK_TEXT = "partial link text"     通過(guò)部分鏈接文本定位
    NAME = "name"                               通過(guò)標(biāo)簽名稱定位
    TAG_NAME = "tag name"                       通過(guò)標(biāo)簽名稱定位
    CLASS_NAME = "class name"                   通過(guò)css class定位
    CSS_SELECTOR = "css selector"               通過(guò)css選擇器
"""
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
class TestCase(object):
    def setup(self):
        """
        Service: 傳入 chromedriver 的路徑
        driver: 創(chuàng)建會(huì)話 session 和 將后續(xù)的代碼傳入到 chromedriver 并且執(zhí)行
        :return:
        """
        service = Service(executable_path=ChromeDriverManager().install()) 
        self.driver = webdriver.Chrome(service=service)
        self.driver.get("https://www.baidu.com/")
        self.driver.maximize_window()
    def teardown(self): 
        self.driver.quit()        #在case執(zhí)行完后關(guān)閉瀏覽器
    # todo 通過(guò)id元素定位 id 是唯一的
    def test_id(self):
        # 1 對(duì)象 driver 2 element
        element = self.driver.find_element(By.ID, "kw")    #kw為ID內(nèi)容,通過(guò)抓包取得,此條為搜索框
        element.send_keys("任意內(nèi)容")      #填入搜索框的內(nèi)容
        print(dir(element))
        print(type(element))
        # <class 'selenium.webdriver.remote.webelement.WebElement'>#element類型
        self.driver.find_element(By.ID, "su").click()
        sleep(2)     #頁(yè)面展示兩秒,可根據(jù)需求自行調(diào)節(jié)
    # todo 通過(guò)標(biāo)簽名稱定位 name 方法可能定位到多個(gè)元素,返回第一個(gè)
    def test_name(self):
        ele = self.driver.find_elements(By.NAME,"wd")      #wd為name內(nèi)容,通過(guò)抓包取得,此條為搜索框
        print(ele)
        ele[0].send_keys("任意內(nèi)容")       #填入搜索框的內(nèi)容
        self.driver.find_element(By.ID,"su").click()
        sleep(3)
    # todo 通過(guò)鏈接文本定位
    def test_link_text(self):
        sleep(4)
        self.driver.find_element(By.LINK_TEXT,"登錄").click()
        sleep(4)
     # todo 通過(guò)部分鏈接文本定位
    def test_partial_link_text(self):
        self.driver.find_element(By.PARTIAL_LINK_TEXT,"登").click()
        sleep(3)
     # todo 通過(guò)標(biāo)簽名稱定位 返回一個(gè)標(biāo)簽列表 通過(guò)下表可以取值
    def test_tag_name(self):
        input = self.driver.find_elements(By.TAG_NAME,"input")
        print(input)
        sleep(3)
     #todo 通過(guò)xpath定位 路徑
    def test_xpath(self):
        sleep(2)
        self.driver.find_element(By.XPATH,'//a[span="4"]').click()
        sleep(3)
        self.driver.find_element(By.XPATH,'//ur[@class="s-hotsearch-content]/li[4]').click()
        sleep(3)
    #todo 通過(guò)css選擇器
    def test_css_selector(self):
        self.driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("任意內(nèi)容")
        self.driver.find_element(By.ID,"su").click()
        sleep(3)
        self.driver.close()
    #todo 通過(guò)css class定位
    def test_class_name(self):
        self.driver.find_element(By.CLASS_NAME,"s_ipt").send_keys('任意內(nèi)容')
        self.driver.find_element(By.CLASS_NAME,"s_btn").click()
        sleep(3)
        self.driver.close()

到了這里,關(guān)于Selenium元素定位——八大方法詳述的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【selenium模塊-WEB自動(dòng)化】八大網(wǎng)頁(yè)元素定位方法(三)

    【selenium模塊-WEB自動(dòng)化】八大網(wǎng)頁(yè)元素定位方法(三)

    一、id 定位 標(biāo)簽的 id 具有唯一性,就像人的身份證。 二、name 定位 name 指定標(biāo)簽的名稱,在頁(yè)面中可以不唯一。 三、class 定位 class 指定標(biāo)簽的類名,在頁(yè)面中可以不唯一。 四、tag 定位 每個(gè) tag 往往用來(lái)定義一類功能,所以通過(guò) tag 來(lái)識(shí)別某個(gè)元素的成功率很低,每個(gè)頁(yè)面

    2024年02月15日
    瀏覽(23)
  • Python+selenium自動(dòng)化八大元素定位方法及實(shí)例(超詳細(xì))

    Python+selenium自動(dòng)化八大元素定位方法及實(shí)例(超詳細(xì))

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

    2024年02月19日
    瀏覽(26)
  • Selenium(一):八大元素定位

    find_element() 中 類型為空,默認(rèn)為By.ID

    2024年04月23日
    瀏覽(96)
  • selenium的八大元素定位方式

    selenium的八大元素定位方式

    1、什么是元素定位 根據(jù)元素的 某個(gè)特征 在網(wǎng)頁(yè)中找到對(duì)應(yīng)的元素,定位元素的目的是為了操作元素,在Web自動(dòng)化中,定位元素是后續(xù)一切操作的前提條件。 2、元素的八大定位方式 2.1、id : 根據(jù)標(biāo)簽/元素的id屬性值定位 一般情況下元素的id是唯一的,所以通過(guò)這個(gè)方法可

    2024年03月14日
    瀏覽(18)
  • 2.Python中selenium八大元素定位

    2.Python中selenium八大元素定位

    目錄 如何進(jìn)行元素定位 瀏覽器開(kāi)發(fā)者工具介紹 一、id屬性定位 二、name定位 三、class_name定位 四、tag_name定位 五、link_text定位 六、partail_link_text定位 七、xpath定位 7.1 選取節(jié)點(diǎn) 7.2 謂語(yǔ) 7.3 軸 7.4 函數(shù) 7.5 邏輯運(yùn)算 八、css定位 8.1 css的定義 8.2 css定位策略 1.id選擇器 2.class選擇器

    2024年02月04日
    瀏覽(23)
  • 【web自動(dòng)化】selenium+python八大元素定位

    【web自動(dòng)化】selenium+python八大元素定位

    推薦:b站軟件測(cè)試?yán)习?注意點(diǎn) 1.有id才能能使用id定位 2.id不能重復(fù) 通過(guò)百度頁(yè)面,演示如何查找id確定id是否重復(fù),其他方式定位也可以這樣搜索 代碼如下(示例): 如果有多個(gè)class_name,可以使用 find_elements 和取下標(biāo)的方式 例如:打開(kāi)嗶哩嗶哩頁(yè)面,有番劇,電影等等,他

    2024年01月21日
    瀏覽(27)
  • 【selenium】八大元素定位方式|xpath css id name...

    【selenium】八大元素定位方式|xpath css id name...

    目錄 一、基礎(chǔ)元素定位 二、cssSelector元素定位——通過(guò)元素屬性定位 三、xpath元素定位——通過(guò)路徑? 1 、xpath絕對(duì)定位 (用的不多) 缺點(diǎn):一旦頁(yè)面結(jié)構(gòu)發(fā)生變化(比如重新設(shè)計(jì)時(shí),路徑少兩節(jié)),該路徑也隨之失效,必須重新寫(xiě) 2、 xpath相對(duì)定位 2.1? 路徑解釋: 2.2? 定

    2024年02月22日
    瀏覽(46)
  • 自動(dòng)化測(cè)試之八大元素定位方式(python3.10+selenium4)

    自動(dòng)化測(cè)試之八大元素定位方式(python3.10+selenium4)

    元素的定位是自動(dòng)化測(cè)試核心。要操作一個(gè)對(duì)象,首先要識(shí)別定位或找到這個(gè)對(duì)象。為了實(shí)現(xiàn)網(wǎng)頁(yè)整體布局,我們先要知道,一個(gè)元素,是如何定位到頁(yè)面上的某個(gè)位置的,這就是元素定位。 系統(tǒng)環(huán)境 Windows 11 ?? python3.10.5 ?? selenium 4.8.0 ?? 注意:以下每種定位方式均有一

    2024年02月03日
    瀏覽(87)
  • 關(guān)于Python中使用selenium八大定位方法

    1.通過(guò)id元素定位? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.find_element_by_id(\\\"id\\\") 2.通過(guò)name元素定位? ? ? ? ? ? ? ? ? ? ? ?.find_element_by_name(\\\"name\\\")?? ? 3.通過(guò)路徑導(dǎo)航定位? ? ? ? ? ? ? ? ? ? ? ? ?.find_element_by_xpath(\\\"xpath\\\") ?? ????? 說(shuō)明 :右鍵所選的網(wǎng)頁(yè)元素,點(diǎn)擊copy,點(diǎn)擊copy ,x

    2023年04月23日
    瀏覽(34)
  • 自動(dòng)化測(cè)試(二)selenium八大獲取元素方法及對(duì)象操作

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

    2024年02月03日
    瀏覽(60)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包