一. 前言

  高亮是什么?

    在ui自动化中可以执行js来让某个页面元素高亮,比如背景颜色、字体颜色、边框颜色等发生改变,以此更加方便执行的时候点了哪一步操作。(如果有不清楚怎么实现的可以转到我的介绍seliky的那一篇哦,我的seliky源码里有现成的)

  

  那么这个高亮如何在playwright中实现呢?

    原理也是一样的,只不过执行底层执行的是nodejs。

  为什么要调整源码?

    通过继承的逻辑链路太长了,不如调整源码来的简单,所以直接调整源码了。

  为什么弃用原生的is_visible?

    截止playwright 1.19版本,官方的 is_visible、is_displayed 方法疑似有bug,经过大量测试,发现这两个方法在明明元素可见的情况下返回 False,有时还抛出异常,真的不好用。

  

  用什么代替 is_ 系列?

    我们知道在常规概念(selenium) 里 is_displayed 表示是否加载到dom树,is_visible 表示是否加载并可见。这样的区别在面对常规元素时不是很大,可以用 is_show 封装的 wait_for_selector 处理。

二. 调整源码

"""
源码里的Page改为Pages
然后将下面的代码复制到源码里,除了第一句
""" from playwright.sync_api._generated import Pages
import time class Page(Pages):
def is_showed(self,
selector: str,
*,
state=None,
timeout: float = None,
strict: bool = None):
"""
原生的is_visible、is_displayed 好像有bug,这样比较好
"""
try:
flag = super().wait_for_selector(
selector=selector, state=state, timeout=timeout, strict=strict
)
except Exception as e:
flag = False
return flag def clicked(self,
selector: str,
*,
has_text=None,
has=None):
"""
实现点击高亮
原生的click有它的优势,这里改名为clicked以区分
"""
return self.locator(selector, has_text=has_text, has=has).click() def locator(
self,
selector: str,
*,
has_text=None,
has=None
):
"""
定位元素高亮
"""
bd = super().locator(
selector=selector, has_text=has_text, has=has
)
for i in range(2):
bd.evaluate('node => node.style.cssText="border:solid 2px blue"')
time.sleep(0.15)
bd.evaluate('node => node.style.cssText="border:solid 2px red"')
time.sleep(0.1)
bd.evaluate('node => node.style.cssText="border:solid 2px red"')
time.sleep(0.4)
bd.evaluate('node => node.style.cssText="border:solid 2px none"')
return bd

playwright 实现高亮、is_visible 等源码修改的更多相关文章

  1. Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)

    最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ...

  2. python的paramiko源码修改了一下,写了个操作命令的日志审计 bug修改

    python的paramiko源码修改了一下,写了个操作命令的日志审计,但是记录的日志中也将backspace删除键记录成^H这个了,于是改了一下代码,用字符串的特性. 字符串具有列表的特性 > ...

  3. Android6.0 源码修改之 Contacts应用

    一.Contacts应用的主界面和联系人详情界面增加顶部菜单添加退出按钮 通过Hierarchy View 工具可以发现 主界面对应的类为 PeopleActivity 联系人详情界面对应的类为 Qu ...

  4. Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮

    前言 之前写过屏蔽系统导航栏功能的文章,具体可看Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP)/动态显示和隐藏NavigationBar 在某些特殊定制的版本中要求 ...

  5. Android6.0 源码修改之屏蔽系统短信功能和来电功能

    一.屏蔽系统短信功能 1.屏蔽所有短信 android 4.2 短信发送流程分析可参考这篇 戳这 源码位置 vendor\mediatek\proprietary\packages\apps\Mms\ ...

  6. el-upload源码修改跳坑

    之前给element-ui提了一个问题,结果没有鸟我,没办法,只能修改源码来满足需求了 (备注:element-ui2依然没有修改,为了迎合产品还是要改源码) 本文讨论的组件属性仅限于list-typ ...

  7. openfire源码修改后如何打包部署到linux服务器上

    原文:http://blog.csdn.net/jinzhencs/article/details/50457152 1.linux版本的3.10.3解压部署启动(过程略,参考我的另一篇博文http: ...

  8. python requests接收chunked编码问题-python源码修改

    python requests接收chunked编码问题-python源码修改 学习了:https://blog.csdn.net/wangzuxi/article/details/40377467

  9. postgresql密码加强-passwordcheck源码修改三种以上字符

    目录 1.使用方式 2.效果 3.源码修改 1.参考pg_cron的源码在配置文件内增加一个参数 2.修改源码配置校验数字 因数据库入网检测须修改密码级别,在源有的passwordcheck插件上进行 ...

  10. vue打包时,assets目录 和static目录下文件的处理区别(nodeModule中插件源码修改后,打包后的文件应放在static目录)

    为了回答这个问题,我们首先需要了解Webpack如何处理静态资产.在 *.vue 组件中,所有模板和CSS都会被 vue-html-loader 及 css-loader 解析,并查找资源URL.例如 ...

随机推荐

  1. Devexpress控件searchLookUpEdit获得选中行的其他列数据

    使用searchLookUpEdit控件获得选中行的其他列的数据.比如有一列代码列和一列描述.那么我们选中一行后想获得选中的代码和描述.可以在searchLookUpEdit1_EditValueCh ...

  2. orcl substr函数与java substring 的不同

    前天事情急改一个存储过程时遇到了substr方法时,一直用好,然后用其他方法跳过去了,今天有时间回头来验证 才发现和java太不一样了! select substr('为中华之崛起而读书',2,4) ...

  3. 前端开发:4、JavaScript简介、变量与常量、数据类型及内置方法、运算符、流程控制、循环结构、内置方法

    前端开发之JavaScript 目录 前端开发之JavaScript 一.JavaScript简介 二.JS基础 三.变量与常量 四.基本数据类型 1.数值类型 2.字符类型 3.布尔类型 五.特殊数 ...

  4. 【vue3】element-plus,Checkbox-Group多选框之绑定选中数据不选中问题

    今天记录一下在新项目vue3中,使用的element-plus组价库遇到的一个问题!场景如下:有一个表格的column绑定的数组对象,我需要对表格的头部实现动态可配置显示表格列,由于绑定的column ...

  5. python中的数学函数

  6. (数据科学学习手札147)Python GIS利器shapely全新2.0版本一览

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,我写过很多篇介绍geopand ...

  7. 从面试题入手,畅谈 Vue 3 性能优化

    前言 今年又是一个非常寒冷的冬天,很多公司都开始人员精简.市场从来不缺前端,但对高级前端的需求还是特别强烈的.一些大厂的面试官为了区分候选人对前端领域能力的深度,经常会在面试过程中考察一些前端框架的源 ...

  8. adb环境配置及常用命令

    一.adb环境配置 1.下载并安装adb驱动 2.下载adb工具platform-tools.rar,解压放在某个文件夹下 3.右击此电脑->属性->高级系统设置->环境变量-> ...

  9. Jmeter 模拟http发送zip文件

    发送zip文件的接口配置如下: 1.  在不知参数情况下使用fidder进行抓包操作,查看参数与MiME类型 2.  新建http取样器,并设置接口地址,进入文件上传设置参数与MIME类型 appli ...

  10. JVM常用调优参数

    目录 JVM内存模型及常用参数 参数解释 垃圾收集器 Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC) Parallel Scavenge收集器(-XX: ...