首页 > 编程语言 >微软出品自动化神器【Playwright+Java】系列(七) 之 元素的可操作性验证

微软出品自动化神器【Playwright+Java】系列(七) 之 元素的可操作性验证

时间:2022-12-18 11:01:42浏览次数:54  
标签:Playwright Java 元素 神器 Locator ElementHandle Yes 可操作性 Page

前言

昨天在某平台发表了一篇这系列的文章,结果不但提示说有违禁词(java也算?),然后文章审核通过后,文章还找不到,不到去哪了,表示很郁闷,去反应未果,确实有点尴尬了。

元素的可操作性验证

关于API的命名,仅出自于我个人理解,旨在看的同学理解会用,感觉名字不好可以重写哈!

1、何为元素的可操作性验证?

在采取行动之前对元素执行一系列可操作性检查,以确保这些行动按预期进行。它会自动等待所有相关检查通过,然后才执行请求的操作。如果所需的检查未在给定范围内通过timeout,则操作失败并显示TimeoutError

举个栗子:

如元素点击操作,在操作元素之前需要预判:

  • 元素是否附加到DOM
  • 元素是否可见
  • 元素是否加载完成,因为没有为加载完元素不可操作
  • 元素是否接收事件,因为没有被其他元素遮挡不可操作
  • 元素是否可用

以下是针对每个操作执行的可操作性检查的完整列表:

Action Attached Visible Stable Receives Events Enabled Editable
check Yes Yes Yes Yes Yes -
click Yes Yes Yes Yes Yes -
dblclick Yes Yes Yes Yes Yes -
setChecked Yes Yes Yes Yes Yes -
tap Yes Yes Yes Yes Yes -
uncheck Yes Yes Yes Yes Yes -
hover Yes Yes Yes Yes - -
scrollIntoViewIfNeeded Yes - Yes - - -
screenshot Yes Yes Yes - - -
fill Yes Yes - - Yes Yes
selectText Yes Yes - - - -
dispatchEvent Yes - - - - -
focus Yes - - - - -
getAttribute Yes - - - - -
innerText Yes - - - - -
innerHTML Yes - - - - -
press Yes - - - - -
setInputFiles Yes - - - - -
selectOption Yes Yes - - Yes -
textContent Yes - - - - -
type Yes - - - - -

2、常见检查元素的可操作性方法

注意:

  • 当元素连接到DocumentShadowRoot 时,元素被视为已附加。
  • 当元素具有非空边界框且没有visibility:hidden计 算样式时,元素被认为是可见的。请注意,零大小或带有的元素display:none不被视为可见。
  • 当元素在至少两个连续的动画帧中保持相同的边界框时,它被认为是稳定的。
  • 元素被视为已启用,除非它是<button>、或具有属性。<select><input><textarea>disabled
  • 元素在启用且未设置属性时被视为可编辑readonly

3、举个栗子

判断按钮是否可用,如下图:

image.png

示例代码如下:

@Test
public void testCheck(){
    System.out.println("按钮状态是否可用:"+page.locator("[value='Submit']").isEnabled());
    System.out.println("按钮状态是否可用:"+page.locator("[value='Submit']").isDisabled());

}

最后

关于其他API部分,请自行去尝试,说句实话,真的硬磕官方文档确实有点累,果然塑料英语是真的不行,希望不要误人子弟就好,建议英文好的同学,还是去看官方文档吧。

标签:Playwright,Java,元素,神器,Locator,ElementHandle,Yes,可操作性,Page
From: https://blog.51cto.com/u_15009374/5950815

相关文章

  • 微软出品自动化神器【Playwright+Java】系列(六) 之 字符输入、单元素键盘事件操作、上
    前言:今天一早起床,就一直太阳穴疼,吃了四片去痛片已经无效,真的是疼的直恶心。如果说学习或者写文章,能够缓解头疼的话,那我想说,我还能坚持一会.....很久没更新这系列的文章了......
  • 微软出品自动化神器【Playwright+Java】系列(七) 之 元素的可操作性验证
    前言昨天在某平台发表了一篇这系列的文章,结果不但提示说有违禁词(java也算?),然后文章审核通过后,文章还找不到,不到去哪了,表示很郁闷,去反应未果,确实有点尴尬了。元素的可操作......
  • JavaScript中的防抖与节流-图文版
    01、防抖还是节流防抖与节流目的都是避免一定时间内,大量重复的操作造成的性能损耗。因此原理也类似,都是阻止过多的事件执行,只保留一部分来执行。适用场景略有不同,也有......
  • Java急速转职GoLang工程师资料
    在这个百年未有之大变局之际,此文送给需要升值加薪的雇佣者。文章目录​​入门​​​​了解、熟悉GoLang​​​​实战​​​​实战壹​​​​实战贰​​​​面试​​​​资料......
  • JavaSE1️⃣简介
    1、历史背景20世纪90年代初,JamesGosling(SUN公司,已被Oracle收购)开发。一门面向对象的编程语言。最初命名Oak(橡树),目标是针对小型家电设备的嵌入式应用,结果市场......
  • JavaSE2️⃣程序基础(上)
    需要了解的计算机基础知识:......
  • JavaSE2️⃣程序基础(下)
    1、流程控制在Java中,分号;作为语句结束。使用流程控制语句,可实现条件判断、循环、程序跳转等功能。1.1、输入输出Java内置System类中,提供了输入输出相关功能......
  • 如何反编译Java文件?
    ​反编译Java文件就是将编译好的.class文件反编译为.java文件,我们可以利用IDEA来轻松实现反编译。一.找到我们的.class文件1.打开项目结构2.在模块下选择想要的输......
  • JavaBean
    JavaBean是一个遵循特定写法的Java类,它通常具有如下特点:这个Java类必须具有一个无参的构造函数属性必须私有化。私有化的属性必须通过public类型的方法暴露给其它程序,......
  • 二分查找python与java实现
    定义给定以下情景,假设有一个有序的数组(从大到小排列),我们需要从中找出我们所需的目标元素并返回其索引。一般的思想是可以使用for循环进行遍历,直到找到目标元素......