一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - python playwright 自動等待和斷言詳解

python playwright 自動等待和斷言詳解

2022-03-09 00:05一名小測試 Python

這篇文章主要為大家介紹了python playwright 自動等待和斷言,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

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

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

?
1
2
3
4
5
6
7
8
9
10
11
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()="全部語言"]', False)
    assert page.title() == "百度一下,你就知道"
    page.close()
if __name__ == '__main__':
    pytest.main(["-v", "test_example.py"])

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

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

鼠標雙擊

?
1
page.dblclick()

獲取元素焦點

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

鼠標懸停

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

鼠標點擊

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

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

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

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

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

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

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

獲取元素屬性值

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

獲取內(nèi)部文本

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

獲取內(nèi)部HTML

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

獲取文本內(nèi)容

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

截圖

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

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

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

輸入鍵盤操作

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

設(shè)置select下拉選項

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

調(diào)度事件

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

檢查點(斷言)

文字內(nèi)容斷言

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

內(nèi)部文字斷言

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

屬性斷言

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

復(fù)選框斷言

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

js表達式斷言

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

內(nèi)部HTML斷言

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

元素可見斷言

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

啟動狀態(tài)斷言

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

直接對比斷言

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
# 斷言本地存儲值
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

總結(jié)

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

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

原文鏈接:https://blog.csdn.net/LIFENG0402/article/details/121550064

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜亚洲WWW湿好爽 午夜想想爱午夜剧场 | 黄瓜视频黄版 | 奇米7777第四色 | 精品国产一区二区在线观看 | 欧美xxxxx69 | 四虎永久免费地址ww417 | 欧美爽妇| 日本在线看免费 | 日日摸日日碰夜夜爽97纠 | 黄a 大片a v 永久免费 | 精品久久久久久亚洲精品 | 女教师系列三上悠亚在线观看 | 国产精品露脸国语对白手机视频 | 色综合中文字幕在线亚洲 | 亚洲高清影院 | 国产白虎 | 国产第一页在线视频 | 91资源站| 国产精品手机视频一区二区 | 亚洲网站在线看 | 精品国产91久久久久久久a | 亚洲国产成人在线 | 日韩天堂在线 | 嘿嘿午夜 | 亚洲精品6久久久久中文字幕 | 狠狠色| 成人免费观看www视频 | 午夜人妻理论片天堂影院 | 亚洲精品国产精品麻豆99 | 午夜亚洲WWW湿好大 午夜想想爱 | 欧美在线一级视频 | julianann办公室 | 美女视频在线观看视频 | 高跟翘臀老师后进式视频 | 故意短裙公车被强好爽在线播放 | 2020最新韩国理论三级0k | 欧美成人福利视频 | 亚洲2017天堂色无码 | 日本一区二区视频在线 | 精品国产成人a区在线观看 精品高潮呻吟99AV无码视频 | 亚洲国产第一区二区香蕉日日 |