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

python playwright 自動等待和斷言詳解

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

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

操作元素的一系列方法,只要調用了測試夾函數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()="設置"]')
    page.click('//*[@id="s-user-setting-menu"]//*[text()="搜索設置"]')
    page.set_checked('//*[text()="全部語言"]', False)
    assert page.title() == "百度一下,你就知道"
    page.close()
if __name__ == '__main__':
    pytest.main(["-v", "test_example.py"])

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

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

鼠標雙擊

    page.dblclick()

獲取元素焦點

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

鼠標懸停

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

鼠標點擊

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

設置復選框取消或選中

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

取消已選中復選框取

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

輸入參數

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

獲取元素屬性值

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

獲取內部文本

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

獲取內部HTML

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

獲取文本內容

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

截圖

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

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

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

輸入鍵盤操作

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

設置select下拉選項

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

調度事件

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

檢查點(斷言)

文字內容斷言

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

內部文字斷言

    # 獲取內部文字,進行斷言
    text = page.inner_text('[target="_blank"]:first-child')
    assert text == "新聞"

屬性斷言

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

復選框斷言

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

js表達式斷言

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

內部HTML斷言

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

元素可見斷言

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

啟動狀態(tài)斷言

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

直接對比斷言

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

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

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

總結

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

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!

相關文章

最新評論

威远县| 顺义区| 双流县| 麻栗坡县| 太仓市| 赣榆县| 太谷县| 沙田区| 环江| 焉耆| 盖州市| 屏东市| 腾冲县| 田东县| 东至县| 宣威市| 临西县| 鹤壁市| 库伦旗| 海口市| 准格尔旗| 玉溪市| 新巴尔虎右旗| 江孜县| 宝清县| 上饶市| 武功县| 土默特右旗| 长顺县| 玉树县| 东乌珠穆沁旗| 游戏| 任丘市| 资溪县| 天柱县| 日喀则市| 青冈县| 柳河县| 辽阳县| 陈巴尔虎旗| 濮阳市|