前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微软出品自动化神器【Playwright+Java】系列(七) 之 元素的可操作性验证

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

作者头像
软件测试君
发布2023-02-24 18:57:58
8600
发布2023-02-24 18:57:58
举报
文章被收录于专栏:测试人生测试人生

前言

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

元素的可操作性验证

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

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

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

举个栗子:

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

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

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

Action

Attached[1]

Visible[2]

Stable[3]

Receives Events[4]

Enabled[5]

Editable[6]

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、常见检查元素的可操作性方法
  • ?ElementHandle.isChecked()
  • ?ElementHandle.isDisabled()
  • ?ElementHandle.isEditable()
  • ?ElementHandle.isEnabled()
  • ?ElementHandle.isHidden()
  • ?ElementHandle.isVisible()
  • ?Page.isChecked()
  • ?Page.isDisabled()
  • ?Page.isEditable()
  • ?Page.isEnabled()
  • ?Page.isHidden()
  • ?Page.isVisible()
  • ?Locator.isChecked()
  • ?Locator.isDisabled()
  • ?Locator.isEditable()
  • ?Locator.isEnabled()
  • ?Locator.isHidden()
  • ?Locator.isVisible()

注意:

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

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

image.png

示例代码如下:

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

}

最后

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

参考资料

[1]

Attached: https://playwright.dev/java/docs/actionability#attached

[2]

Visible: https://playwright.dev/java/docs/actionability#visible

[3]

Stable: https://playwright.dev/java/docs/actionability#stable

[4]

Receives Events: https://playwright.dev/java/docs/actionability#receives-events

[5]

Enabled: https://playwright.dev/java/docs/actionability#enabled

[6]

Editable: https://playwright.dev/java/docs/actionability#editable

版权归软件测试君所有

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 元素的可操作性验证
      • 1、何为元素的可操作性验证?
        • 2、常见检查元素的可操作性方法
          • 3、举个栗子
          • 最后
          • 参考资料
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档