使用过Playwright的同学都会有这样的感受,Playwright对UI页面中元素的识别非常稳定,这离不开其强大的动态等待机制!简单的解释就是,Playwright在对UI页面中的任何元素操作之前,都需要做出一些列的校验工作来确保能够稳定、准确地操控该元素,如果所需的检查未在给定的超时内通过,则操作失败并抛出TimeoutError。
我们先以click方法为例,来看一下Playwright在click一个元素之前都做了哪些校验。
Playwright 需要校验如下内容:
- locator 是页面中唯一存在的;
- element 是 Visible的;
- element 是 Stable的,例如当前元素没有播放动画;
- element 需要接收event, 例如判断想要点击的指定元素没有被其他元素遮挡;
- element 是Enabled的,当标签<button>, <select>, <input> 和 <textarea> 被设置属性disabled时,那么元素就不是Enabled
上述校验都通过后Playwright才会进行click操作,如果上述检查未在给定的超时内通过,则操作失败并抛出TimeoutError。
另外Playwright还需要判断element是否Editable的,只在clear和fill操作中进行判断。
关于其他操作事件需要校验的内容如下图所示:
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!