IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python:playwright 自动等待和断言 -> 正文阅读

[Python知识库]python:playwright 自动等待和断言

自动等待及元素执行方法

操作元素的一系列方法,只要调用了测试夹函数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对元素执行前,会进行一系列可操作性检查,以确保这些行动按预期运行。它会自动等待所有相关检查通过,然后才执行请求的操作。如果所需的检查未在给定的范围内通过则抛出timeout,操作将失败并显示TimeoutError

  • 执行方法如下:

鼠标双击

????page.dblclick()

获取元素焦点

????#?获取元素并聚焦它。?如果没有匹配的元素,则方法等待匹配元素出现在?DOM?中。
????page.focus('#su')

鼠标悬停

????#?就是鼠标放在按钮上,此方法针对那种浮框操作
????page.hover('//*[@id="u1"]/*[text()="设置"]')

鼠标点击

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

设置复选框取消或选中

????#?布尔值为True,如果未选中则选中,布尔值为False是,如果未选中则就显示未选中
????page.set_checked('//*[text()="全部语言"]',?False)

取消已选中复选框取

????#?确保元素是复选框或单选框。如果该元素已取消选中,则此方法立即返回
????page.uncheck('//*[text()="仅简体中文"]')

输入参数

????#?此方法是聚焦元素,input输入值后触发事件。您也可以传递一个空字符串来清除输入字段。
????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')

填写文本并触发键盘事件

????#?为文本中的每个字符发送一个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()="搜索设置"]')
????#?复选框状态,进行断言
????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?==?"长津湖超战狼2成中国影史票房冠军"

内部HTML断言

????#?内部?HTML?,进行断言
????html?=?page.inner_html('[class="hot-title"]')
????assert?"百度热搜"?in?html

元素可见断言

????#?元素可见性?,进行断言
????visible?=?page.is_visible('#su')
????assert?visible

启动状态断言

????#?启用状态(元素存在可点击)?,进行断言
????enabled?=?page.is_enabled('#su')
????assert?enabled

直接对比断言

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

playwright还提供了自定义断言,这一块我还没有实操过,有兴趣可的可继续研究下:

#?断言本地存储值
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增加了自动等待,这样就能把用例批量运行的稳定性提升上去了,对断言的操作相比selenium来说也比较容易上手一些。

后续会持续更新playwright框架,敬请期待…


以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的点赞和分享哟,谢谢!

未完,待续…

一直都在努力,希望您也是!

微信搜索公众号:就用python

文章作者:李 锋|编辑排版:梁莉莉

更多内容欢迎关注公众号

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 08:49:10  更:2021-11-26 08:49:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:26:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码