当前位置: 首页 > news >正文

最强自动化测试框架Playwright(18)- 执行js脚本

page.evaluate() API 可以在网页上下文中运行 JavaScript 函数,并将结果带回 Playwright 环境。

href = page.evaluate('() => document.location.href')

 如果结果是 Promise 或函数是异步的,则计算将自动等待,直到解析:

status = page.evaluate("""async () => {
  response = await fetch(location.href)
  return response.status
}""")

 page.evaluate()方法接收一个参数,这个参数可以can be a mix of Serializable values and JSHandle or ElementHandle instances

# A primitive value.
page.evaluate('num => num', 42)# An array.
page.evaluate('array => array.length', [1, 2, 3])# An object.
page.evaluate('object => object.foo', { 'foo': 'bar' })# A single handle.
button = page.evaluate('window.button')
page.evaluate('button => button.textContent', button)# Alternative notation using elementHandle.evaluate.
button.evaluate('(button, from) => button.textContent.substring(from)', 5)# Object with multiple handles.
button1 = page.evaluate('window.button1')
button2 = page.evaluate('.button2')
page.evaluate("""o => o.button1.textContent + o.button2.textContent""",{ 'button1': button1, 'button2': button2 })# Object destructuring works. Note that property names must match
# between the destructured object and the argument.
# Also note the required parenthesis.
page.evaluate("""({ button1, button2 }) => button1.textContent + button2.textContent""",{ 'button1': button1, 'button2': button2 })# Array works as well. Arbitrary names can be used for destructuring.
# Note the required parenthesis.
page.evaluate("""([b1, b2]) => b1.textContent + b2.textContent""",[button1, button2])# Any non-cyclic mix of serializables and handles works.
page.evaluate("""x => x.button1.textContent + x.list[0].textContent + String(x.foo)""",{ 'button1': button1, 'list': [button2], 'foo': None })

http://www.lryc.cn/news/122110.html

相关文章:

  • 阿里云云主机_ECS云服务器_轻量_GPU_虚拟主机详解
  • [QT编程系列-41]:Qt QML与Qt widget 深入比较,快速了解它们的区别和应用场合
  • springboot 使用zookeeper实现分布式锁
  • ViewUI表格Table嵌套From表单-动态校验数据合法性的解决方法
  • 服务器安装Tomcat
  • 【Apollo】自动驾驶的平台背景,平台介绍
  • docker 安装与配置
  • Titanic--细节记录三
  • k8s-----集群调度
  • 01-Spark环境部署
  • HOT86-单词拆分
  • 开源数据集分类汇总(医学,卫星,分割,分类,人脸,农业,姿势等)
  • Linux:Firewalld防火墙
  • mysql死锁;锁表排查
  • YAMLException: java.nio.charset.MalformedInputException: Input length = 1
  • 无需求文档,保障测试质量的可行性做法
  • SpringBoot项目学习笔记
  • 如何在Vue表单处理中实现表单字段的文件下载
  • SSL证书DV和OV的区别?
  • 计算机竞赛 GRU的 电影评论情感分析 - python 深度学习 情感分类
  • 论文阅读 - Neutral bots probe political bias on social media
  • Fabric系列 - 知识点整理
  • 多目标优化算法之樽海鞘算法(MSSA)
  • 阿里云轻量应用服务器使用教程_创建配置_远程连接_网站上线
  • 自监督学习的概念
  • C#多线程开发详解
  • Linux 基础篇(六)sudo和添加信任用户
  • 【Linux】程序地址空间
  • springboot 设置自定义启动banner背景图 教程
  • CSS的引入方式有哪些?