微軟出品自動化神器【Playwright+Java】系列(七) 之 元素的可操作性驗證

久曲健發表於2022-12-18

前言

昨天在某平臺發表了一篇這系列的文章,結果不但提示說有違禁詞(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部分,請自行去嘗試,說句實話,真的硬磕官方文件確實有點累,果然塑膠英語是真的不行,希望不要誤人子弟就好,建議英文好的同學,還是去看官方文件吧。

相關文章