playwright 实现高亮、is_visible 等源码修改
2022/5/27 1:22:34
本文主要是介绍playwright 实现高亮、is_visible 等源码修改,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一. 前言
高亮是什么?
在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
作者留言
原创不易,如果觉得本文对你有帮助,记得打赏噢O(∩_∩)O,您的支持是我创作路上最大的动力~
这篇关于playwright 实现高亮、is_visible 等源码修改的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南
- 2024-11-23JAVA项目部署入门:新手必读指南
- 2024-11-23Java项目部署入门:新手必看指南
- 2024-11-23Java项目部署入门:新手必读指南
- 2024-11-23Java项目开发入门:新手必读指南
- 2024-11-23JAVA项目开发入门:从零开始的实用教程
- 2024-11-23Java项目开发入门:新手必读指南