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

web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天

這篇具有很好參考價值的文章主要介紹了web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.selenium獲取斷言信息

獲取到的斷言信息就是實際結(jié)果
預(yù)期結(jié)果使我們確定的,直接寫在代碼中的
而實際結(jié)果是無法確定的,所以需要用一些方法去獲取

代碼示例

"""
獲取到的斷言信息就是實際結(jié)果
預(yù)期結(jié)果使我們確定的,直接寫在代碼中的
而實際結(jié)果是無法確定的,所以需要用一些方法去獲取
"""

from selenium import webdriver
# 創(chuàng)建瀏覽器驅(qū)動對象,這里是打開瀏覽器
driver = webdriver.Chrome("E:\憤怒吧小鳥\chromedriver-win64\chromedriver.exe")
#這種寫法是在配置了chromedriver環(huán)境變量之后,可不寫chromedriver的路徑
# driver=webdriver.Chrome()
# 訪問網(wǎng)址
driver.get('http://www.baidu.com')
#獲取頁面的標題
print(driver.title)  #百度一下,你就知道
# 獲取當前頁面的 URL
print(driver.current_url)  #https://www.baidu.com/

# 獲取標簽對(html的標簽對)之間的文本信息
#   1、標簽元素如果不展示在頁面上(比如:鼠標懸停才會有內(nèi)容顯示的情況),獲取結(jié)果為空
#   2、如果標簽對中間沒有值,獲取到的結(jié)果也是空的
#   3、如 input 之類的單標簽,獲取結(jié)果也是空的
print(driver.find_element_by_class_name("title-text").text)  #百度熱榜
# 獲取元素的某個屬性
ele = driver.find_element_by_id("kw")
print(ele.get_attribute("class"))  #s_ipt
driver.quit()

2.設(shè)置元素等待

場景:當我們加載頁面的時候,一些元素是需要時間的
就有可能發(fā)生,代碼執(zhí)行到了,而元素沒有被加載出來
此時就會出現(xiàn)找不到元素的情況,所以就要元素等待

元素等待大家首先都會想到time.sleep(),但是這個效率低;比如你等待1s,程序在0.3s就已經(jīng)加載完成了,那就是在浪費時間;已經(jīng)知道了 為什么 time.sleep 不好,所以不用;

此問題的解決方案就是,在元素定位之前,進行等待,等到元素出現(xiàn)

所以webdriver 提供了兩種等待類型:顯示等待、隱式等待

2.1顯示等待

  • 顯示等待,若等到元素,就不會再等了
  • 若想使用顯示等待,則必須對元素定位進行修改
  • 也就是說,顯示等待必須對具體的某個元素定位,去主動聲明

舉例子,再微博地址為【https://m.weibo.cn/】做一些動作

(1)點擊大家都在搜

web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天,ui自動化,python,selenium,自動化,selenium

(2)點擊微博熱搜榜

web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天,ui自動化,python,selenium,自動化,selenium

代碼示例

from selenium import webdriver
# 創(chuàng)建瀏覽器驅(qū)動對象,這里是打開瀏覽器
driver = webdriver.Chrome("E:\憤怒吧小鳥\chromedriver-win64\chromedriver.exe")
# 訪問網(wǎng)址
driver.get("https://m.weibo.cn/")

# 點擊大家都在搜
driver.find_element_by_xpath("/html/body/div/div/div/div/a//div").click()

# 點擊微博熱搜榜
ele=driver.find_element_by_css_selector("#app > div:nth-child(1) > div:nth-child(1) > div.card.m-panel.card16.m-col-2 > div > div > div:nth-child(10) > div > div > h4")
ele.click()

運行結(jié)果報錯

web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天,ui自動化,python,selenium,自動化,selenium

那么我們來檢驗代碼里的元素定位是否正確

web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天,ui自動化,python,selenium,自動化,selenium

web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天,ui自動化,python,selenium,自動化,selenium

原因(就是前文提到的):

當我們加載頁面的時候,一些元素是需要時間的
就有可能發(fā)生,代碼執(zhí)行到了,而元素沒有被加載出來
此時就會出現(xiàn)找不到元素的情況

利用顯示等待,優(yōu)化代碼

from selenium import webdriver
from selenium.webdriver.common.by import By  # 設(shè)置元素定位使用哪種方法的
from selenium.webdriver.support.ui import WebDriverWait  # 元素等待類
from selenium.webdriver.support import expected_conditions as EC  # 提供條件判斷函數(shù)
# 創(chuàng)建瀏覽器驅(qū)動對象,這里是打開瀏覽器
driver = webdriver.Chrome("E:\憤怒吧小鳥\chromedriver-win64\chromedriver.exe")
# 訪問網(wǎng)址
driver.get("https://m.weibo.cn/")

# 點擊大家都在搜
driver.find_element_by_xpath("/html/body/div/div/div/div/a//div").click()

# 點擊微博熱搜榜
# ele=driver.find_element_by_css_selector("#app > div:nth-child(1) > div:nth-child(1) > div.card.m-panel.card16.m-col-2 > div > div > div:nth-child(10) > div > div > h4")


# 顯示等待,若等到元素,就不會再等了
# 若想使用顯示等待,則必須對元素定位進行修改
# 也就是說,顯示等待必須對具體的某個元素定位,去主動聲明
# 每隔 0.5s 檢查一次元素是否存在,最多等待 5 s
# 若在最大超時時間內(nèi),找到元素,就不等了,繼續(xù)往下執(zhí)行
# 若最大超時時間還找不到元素,就報錯
ele = WebDriverWait(driver, 5, 0.5).until(  # 每隔 0.5s 檢查一次元素是否存在,最多等待 5 s
    EC.visibility_of_element_located(  #visibility_of_element_located()是一個函數(shù),并且()里的對象是元組,檢查元素是否被加載出來
        (By.CSS_SELECTOR,
         "#app > div:nth-child(1) > div:nth-child(1) > div.card.m-panel.card16.m-col-2 > div > div > div:nth-child(10) > div > div > h4")
    )
)
ele.click()

運行結(jié)果(顯示出微博熱搜界面)

可給顯示等待用一個函數(shù)封裝起來,要用的時候直接調(diào)用即可

新建一個waitLib.py模塊

from selenium.webdriver.support.ui import WebDriverWait  # 元素等待類
from selenium.webdriver.support import expected_conditions as EC  # 提供條件判斷函數(shù)

# 將顯示等待封裝成了函數(shù)
def waitEle(driver, timeout, poll_frequency, findType, findStr):
    ele = WebDriverWait(driver, timeout, poll_frequency).until(
        EC.visibility_of_element_located(
            (findType, findStr)
        )
    )
    return ele

2.2隱式等待

為什么有顯示等待,還有隱式等待,是因為顯示等待的代碼比較繁瑣(復(fù)雜)

(顯示等待對每一個元素都要聲明,但是隱式等待只需要聲明一次就可以)

隱式等待默認參數(shù)是
當腳本執(zhí)行到某個元素定位的時候,能定位就繼續(xù)執(zhí)行
如果不能定位,以輪詢的方式(0.5s 檢查一次)不斷的判斷元素是否能被定位
假設(shè),在第 x(x<=最大超時時間) 秒定位到元素了,就不等了,繼續(xù)往下執(zhí)行
若直到最大時長還沒定位成功,就拋出異常

注意:聲明隱式等待后,只有聲明之后的元素定位才有隱式等待,聲明之前的元素定位是沒有隱式等待的

顯示等待和隱式等待的功能是一樣的,基本上用了顯示等待就不要用隱式等待,用了隱式等待就不要用顯示等待,顯示等待的好處:比隱式等待更節(jié)約時間(根據(jù)自己的需求選擇)

代碼示例

from selenium import webdriver

# 創(chuàng)建瀏覽器驅(qū)動對象,這里是打開瀏覽器
driver = webdriver.Chrome("E:\憤怒吧小鳥\chromedriver-win64\chromedriver.exe")

# 隱式等待默認參數(shù)是秒,如下代碼,最大超時時間為 5 秒
# 當腳本執(zhí)行到某個元素定位的時候,能定位就繼續(xù)執(zhí)行
# 如果不能定位,以輪詢的方式(0.5s 檢查一次)不斷的判斷元素是否能被定位
# 假設(shè),在第 x(x<=最大超時時間) 秒定位到元素了,就不等了,繼續(xù)往下執(zhí)行
# 若直到最大時長還沒定位成功,就拋出異常

#聲明隱式等待
driver.implicitly_wait(5) # 聲明隱式等待后,只有聲明之后的元素定位才有隱式等待,聲明之前的元素定位是沒有隱式等待的
# 訪問網(wǎng)址
driver.get("https://m.weibo.cn/")
# 點擊大家都在搜
driver.find_element_by_xpath("/html/body/div/div/div/div/a//div").click()
# 點擊微博熱搜榜
driver.find_element_by_css_selector("#app > div:nth-child(1) > div:nth-child(1) > div.card.m-panel.card16.m-col-2 > div > div > div:nth-child(10) > div > div > h4").click()

3.xpath高級語法

xpath 使用路徑表達式來選取 xml 文檔或者HTML文檔上的節(jié)點或節(jié)點集
這些路徑表達式和我們常規(guī)電腦上的文件路徑表達式很像
xpath的最頂層是一個/
一層一層的寫是絕對路徑(用絕對路徑寫太繁瑣)

相對路徑是//

(/只能匹配到兒子,//能匹配到所有的后代)

用微博熱搜舉例

微博熱搜 (weibo.cn)

//div[@class="m-container-max"] ? 匹配 class 屬性為 "m-container-max" 的div標簽
也可以不指定標簽類型

web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天,ui自動化,python,selenium,自動化,selenium

//*[@class="m-container-max"]

(上述的*是通配符)
上述xpath 匹配任意類型的標簽,且標簽的 class 屬性為 m-container-max

//*[@class]
上述表達式匹配所有具備class 屬性的任意標簽

//div[@id="app" and @class="m-container-max"]
and 可以拼接多個屬性

在xpath中,一個點表示自己/.,兩個點表示父元素/..

web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天,ui自動化,python,selenium,自動化,selenium

//span[text()="要聞"]
上述表達式根據(jù)
標簽對中間的文本值定位(不需要加@)

web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天,ui自動化,python,selenium,自動化,selenium

可以不指定標簽類型
//*[text()="要聞"]

也可以匹配所有有文本的
//span[text()]

//span[contains(text(), "要聞")]
上述表達式可以模糊匹配文本

代碼示例可在資源綁定中自行下載,如有疑問,可在評論區(qū)下留言文章來源地址http://www.zghlxwxcb.cn/news/detail-796146.html

到了這里,關(guān)于web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【python】之selenium模塊,實現(xiàn)Web端自動化測試!【基礎(chǔ)篇】

    【python】之selenium模塊,實現(xiàn)Web端自動化測試!【基礎(chǔ)篇】

    Selenium是一個Web的自動化測試工具,最初是為網(wǎng)站自動化測試而開發(fā)的,Selenium 可以直接調(diào)用瀏覽器,它支持所有主流的瀏覽器(包括PhantomJS這些無界面的瀏覽器),可以接收指令,讓瀏覽器自動加載頁面,獲取需要的數(shù)據(jù),甚至頁面截屏等。我們可以使用selenium很容易完成之

    2024年02月06日
    瀏覽(29)
  • web自動化測試入門篇04——selenium+python基礎(chǔ)方法封裝

    web自動化測試入門篇04——selenium+python基礎(chǔ)方法封裝

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

    2024年02月03日
    瀏覽(22)
  • 基于web應(yīng)用的UI自動化、跨瀏覽器測試、測試結(jié)果分析:Selenium 開源的自動化測試工具基礎(chǔ)教程

    作者:禪與計算機程序設(shè)計藝術(shù) Selenium是一個開源的自動化測試工具,它提供了基于web應(yīng)用的UI自動化、跨瀏覽器測試、測試結(jié)果分析等功能。它提供的功能包括:自動化控制瀏覽器、操縱表單、點擊鏈接及按鈕、驗證頁面元素、執(zhí)行JavaScript代碼、生成PDF文件、模擬移動設(shè)備

    2024年02月09日
    瀏覽(29)
  • Web自動化測試(一)(全網(wǎng)最給力自動化教程)

    Web自動化測試(一)(全網(wǎng)最給力自動化教程)

    2.1 操作元素基本方法 2.2 常用8種元素定位(Firebug和firepath) 2.3 xpath定位 正文 前言 前面已經(jīng)把環(huán)境搭建好了,從這篇開始,正式學(xué)習(xí)selenium的webdriver框架。我們平常說的 selenium自動化,其實它并不是類似于QTP之類的有GUI界面的可視化工具,我們要學(xué)的是webdriver框架的API。 本

    2024年02月02日
    瀏覽(15)
  • 【W(wǎng)eb UI自動化測試】Web UI自動化測試之框架篇(全網(wǎng)最全)

    【W(wǎng)eb UI自動化測試】Web UI自動化測試之框架篇(全網(wǎng)最全)

    本文大綱截圖: UnitTest框架: PyTest框架: 框架:?框架英文單詞 framework,為解決一類事情的功能的集合。需要按照框架的規(guī)定(套路)去書寫代碼。 概念:UnitTest是python自帶的一個單元測試框架,用它來做單元測試 自帶的框架:不需要單獨按照,只要安裝了 python就可以用

    2023年04月09日
    瀏覽(29)
  • 【W(wǎng)eb UI自動化測試】Web UI自動化測試之日志收集篇(全網(wǎng)最全)

    【W(wǎng)eb UI自動化測試】Web UI自動化測試之日志收集篇(全網(wǎng)最全)

    本文大綱截圖: ? 日志:?用于記錄系統(tǒng)運行時的信息,對一個事件的記錄,也稱為 Log 。 日志作用: 1)調(diào)試程序 2)了解系統(tǒng)程序運行的情況是否正常 3)系統(tǒng)程序運行故障分析與問題定位 4)用來做用戶行為分析和數(shù)據(jù)統(tǒng)計 日志級別: 日志級別:指日志信息的優(yōu)先級、重

    2024年02月12日
    瀏覽(22)
  • 自動化測試: Selenium 自動登錄授權(quán),再 Requests 請求內(nèi)容

    自動化測試: Selenium 自動登錄授權(quán),再 Requests 請求內(nèi)容

    Selenium 自動登錄網(wǎng)站、截圖及 Requests 抓取登錄后的網(wǎng)頁內(nèi)容。一起了解下吧。 Selenium: 支持 Web 瀏覽器自動化的一系列工具和庫的綜合項目。 Requests: 唯一的一個非轉(zhuǎn)基因的 Python HTTP 庫,人類可以安全享用。 ? Selenium 實現(xiàn),相當于模擬用戶手動打開瀏覽器、進行登錄的過程。

    2024年01月21日
    瀏覽(20)
  • 全網(wǎng)最詳細的自動化測試(Jenkins 篇)

    全網(wǎng)最詳細的自動化測試(Jenkins 篇)

    Robot Framework 概念 Robot Framework 安裝 Pycharm + Robot Framework 環(huán)境搭建 Robot Framework 介紹 Jenkins 自動化測試 Robot Framework是一個基于Python的,可擴展的驅(qū)動的自動化測試框架。 它有幾個主要特點:? 使用簡單易用的表格式語法創(chuàng)建測試用例; 提供從現(xiàn)有擴展到更高級別

    2024年02月09日
    瀏覽(54)
  • 自動化測試之web自動化(Selenium)

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

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

    2024年03月15日
    瀏覽(47)
  • 火爆全網(wǎng),Python自動化測試-openpyxl操作測試(詳細)

    當做自動化測試時,測試用例逐漸變多情況下,如果所有測試用例都通過代碼管理將會使得代碼十分臃腫,而且維護成本會很高; 所以我們一般會通過Excel去管理所有的測試用例,而openpyxl庫提供了訪問Excel的方法 openpyxl的介紹 一個Python庫,用于讀取/寫入Excel 2010 xlsx 、xlsm 、

    2024年02月11日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包