最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python playwright 自動(dòng)等待和斷言詳解

 更新時(shí)間:2021年11月26日 15:35:57   作者:一名小測(cè)試  
這篇文章主要為大家介紹了python playwright 自動(dòng)等待和斷言,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

自動(dòng)等待及元素執(zhí)行方法

操作元素的一系列方法,只要調(diào)用了測(cè)試夾函數(shù)page,就能引出操作元素的方法:

import pytest
from playwright.sync_api import Page
def test_example(page: Page):
    page.goto("https://www.baidu.com")
    page.hover('//*[@id="u1"]/*[text()="設(shè)置"]')
    page.click('//*[@id="s-user-setting-menu"]//*[text()="搜索設(shè)置"]')
    page.set_checked('//*[text()="全部語(yǔ)言"]', False)
    assert page.title() == "百度一下,你就知道"
    page.close()
if __name__ == '__main__':
    pytest.main(["-v", "test_example.py"])

playwright對(duì)元素執(zhí)行前,會(huì)進(jìn)行一系列可操作性檢查,以確保這些行動(dòng)按預(yù)期運(yùn)行。它會(huì)自動(dòng)等待所有相關(guān)檢查通過(guò),然后才執(zhí)行請(qǐng)求的操作。如果所需的檢查未在給定的范圍內(nèi)通過(guò)則拋出timeout,操作將失敗并顯示TimeoutError。

  • 執(zhí)行方法如下:

鼠標(biāo)雙擊

    page.dblclick()

獲取元素焦點(diǎn)

    # 獲取元素并聚焦它。 如果沒有匹配的元素,則方法等待匹配元素出現(xiàn)在 DOM 中。
    page.focus('#su')

鼠標(biāo)懸停

    # 就是鼠標(biāo)放在按鈕上,此方法針對(duì)那種浮框操作
    page.hover('//*[@id="u1"]/*[text()="設(shè)置"]')

鼠標(biāo)點(diǎn)擊

    page.click('//*[@id="s-user-setting-menu"]//*[text()="搜索設(shè)置"]')

設(shè)置復(fù)選框取消或選中

    page.click('//*[@id="s-user-setting-menu"]//*[text()="搜索設(shè)置"]')

取消已選中復(fù)選框取

    # 確保元素是復(fù)選框或單選框。如果該元素已取消選中,則此方法立即返回
    page.uncheck('//*[text()="僅簡(jiǎn)體中文"]')

輸入?yún)?shù)

    # 此方法是聚焦元素,input輸入值后觸發(fā)事件。您也可以傳遞一個(gè)空字符串來(lái)清除輸入字段。
    page.fill("#kw", "秦時(shí)明月")

獲取元素屬性值

    # 返回元素屬性值
    page.get_attribute('#kw', 'name')

獲取內(nèi)部文本

    page.inner_text('//*[@id="s-hotsearch-wrapper"]//*[@data-index="2"]//*[@class="title-content-title"]')

獲取內(nèi)部HTML

    page.inner_html('//*[@id="s-hotsearch-wrapper"]//*[@data-index="2"]')

獲取文本內(nèi)容

    page.text_content('//*[@id="s-hotsearch-wrapper"]//*[@data-index="2"]')

截圖

    # baidu.png存放至當(dāng)前文件夾下的cases文件夾種
    page.screenshot(path='./cases/baidu.png')

填寫文本并觸發(fā)鍵盤事件

    # 為文本中的每個(gè)字符發(fā)送一個(gè)keydown、keypress/input和keyup事件。
    page.type("#kw", "hello")

輸入鍵盤操作

    # 獲取按鈕元素,輸入鍵盤操作
    page.press('#su', 'Enter')

設(shè)置select下拉選項(xiàng)

    # 與值匹配的單個(gè)選擇
    page.select_option(\"select#colors\", \"blue\")
    # 與標(biāo)簽匹配的單個(gè)選擇
    page.select_option(\"select#colors\", label=\"blue\")
    # 多項(xiàng)選擇
    page.select_option(\"select#colors\", value=[\"red\", \"green\", \"blue\"])

調(diào)度事件

   # type可傳:"click", "dragstart"
    page.dispatch_event('#su', 'click')

檢查點(diǎn)(斷言)

文字內(nèi)容斷言

    # 獲取文本內(nèi)容,進(jìn)行斷言
    content = page.text_content('[target="_blank"]:first-child')
    assert content == "新聞"

內(nèi)部文字?jǐn)嘌?/h3>
    # 獲取內(nèi)部文字,進(jìn)行斷言
    text = page.inner_text('[target="_blank"]:first-child')
    assert text == "新聞"

屬性斷言

    # 獲取屬性值,進(jìn)行斷言
    attribute = page.get_attribute('#su', 'value')
    assert attribute == "百度一下"

復(fù)選框斷言

    page.hover('//*[@id="u1"]/*[text()="設(shè)置"]')
    page.click('//*[@id="s-user-setting-menu"]//*[text()="搜索設(shè)置"]')
    # 復(fù)選框狀態(tài),進(jìn)行斷言
    checked = page.is_checked('//*[text()="全部語(yǔ)言"]')
    assert checked

js表達(dá)式斷言

    # JS表達(dá)式,進(jìn)行斷言
    js_content = page.locator('[data-index="4"]>a>[class="title-content-title"]').text_content()
    assert js_content == "長(zhǎng)津湖超戰(zhàn)狼2成中國(guó)影史票房冠軍"

內(nèi)部HTML斷言

    # 內(nèi)部 HTML ,進(jìn)行斷言
    html = page.inner_html('[class="hot-title"]')
    assert "百度熱搜" in html

元素可見斷言

    # 元素可見性 ,進(jìn)行斷言
    visible = page.is_visible('#su')
    assert visible

啟動(dòng)狀態(tài)斷言

    # 啟用狀態(tài)(元素存在可點(diǎn)擊) ,進(jìn)行斷言
    enabled = page.is_enabled('#su')
    assert enabled

直接對(duì)比斷言

    assert page.title() == "百度一下,你就知道"

playwright還提供了自定義斷言,這一塊我還沒有實(shí)操過(guò),有興趣可的可繼續(xù)研究下:

# 斷言本地存儲(chǔ)值
user_id = page.evaluate("() => window.localStorage.getItem('user_id')")
assert user_id
# 斷言輸入元素的值
value = page.locator('#search').input_value()
assert value == 'query'
# 斷言計(jì)算樣式
font_size = page.locator('div').evaluate('el => window.getComputedStyle(el).fontSize')
assert font_size == '16px'
# 斷言列表長(zhǎng)度
length = page.locator('li.selected').count()
assert length == 3

總結(jié)

playwright增加了自動(dòng)等待,這樣就能把用例批量運(yùn)行的穩(wěn)定性提升上去了,對(duì)斷言的操作相比selenium來(lái)說(shuō)也比較容易上手一些。

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • NumPy性能優(yōu)化的實(shí)例技巧

    NumPy性能優(yōu)化的實(shí)例技巧

    NumPy 提供了一些工具和技巧,幫助用戶優(yōu)化代碼以提高執(zhí)行效率,本文主要介紹了NumPy性能優(yōu)化,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • pandas.DataFrame Series排序的使用(sort_values,sort_index)

    pandas.DataFrame Series排序的使用(sort_values,sort_index)

    本文主要介紹了pandas.DataFrame Series排序的使用(sort_values,sort_index),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 使用Python自動(dòng)化Microsoft Excel和Word的操作方法

    使用Python自動(dòng)化Microsoft Excel和Word的操作方法

    這篇文章主要介紹了使用Python自動(dòng)化Microsoft Excel和Word,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • python使用Queue在多個(gè)子進(jìn)程間交換數(shù)據(jù)的方法

    python使用Queue在多個(gè)子進(jìn)程間交換數(shù)據(jù)的方法

    這篇文章主要介紹了python使用Queue在多個(gè)子進(jìn)程間交換數(shù)據(jù)的方法,實(shí)例分析了Queue實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)交互的技巧,需要的朋友可以參考下
    2015-04-04
  • python下載衛(wèi)星云圖合成gif的方法示例

    python下載衛(wèi)星云圖合成gif的方法示例

    這篇文章主要介紹了python下載衛(wèi)星云圖合成gif的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Python實(shí)現(xiàn)下載網(wǎng)頁(yè)并將資源改為本地相對(duì)路徑

    Python實(shí)現(xiàn)下載網(wǎng)頁(yè)并將資源改為本地相對(duì)路徑

    這篇文章主要為大家詳細(xì)介紹了如何使用Python輕松實(shí)現(xiàn)下載網(wǎng)頁(yè)并將資源改為本地相對(duì)路徑,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2026-01-01
  • ndarray的轉(zhuǎn)置(numpy.transpose()與A.T命令對(duì)比分析)

    ndarray的轉(zhuǎn)置(numpy.transpose()與A.T命令對(duì)比分析)

    這篇文章主要介紹了ndarray的轉(zhuǎn)置(numpy.transpose()與A.T命令對(duì)比分析),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Flask Web開發(fā)入門之文件上傳(八)

    Flask Web開發(fā)入門之文件上傳(八)

    這篇文章主要為大家詳細(xì)介紹了Flask Web開發(fā)入門之文件上傳的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • python虛擬環(huán)境的安裝和配置(virtualenv,virtualenvwrapper)

    python虛擬環(huán)境的安裝和配置(virtualenv,virtualenvwrapper)

    這篇文章主要介紹了python虛擬環(huán)境的安裝和配置(virtualenv,virtualenvwrapper),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python中溫度單位轉(zhuǎn)換的實(shí)例方法

    python中溫度單位轉(zhuǎn)換的實(shí)例方法

    在本篇文章里小編給大家整理關(guān)于python中溫度單位轉(zhuǎn)換的實(shí)例方法,有需要的朋友們可以學(xué)習(xí)參考下。
    2020-12-12

最新評(píng)論

吉隆县| 凤城市| 洛隆县| 安阳县| 浦县| 岫岩| 乌兰浩特市| 茶陵县| 靖宇县| 西昌市| 宜州市| 九龙坡区| 钟祥市| 上高县| 上蔡县| 潮州市| 盐源县| 永善县| 涞源县| 广平县| 留坝县| 南木林县| 沿河| 西充县| 隆子县| 瑞金市| 卢龙县| 莱州市| 青阳县| 富宁县| 丽江市| 呼伦贝尔市| 板桥市| 罗城| 苏尼特右旗| 镇远县| 景东| 五莲县| 陇南市| 固安县| 尚义县|