點擊問題

「元素無法點擊」錯誤

ChromeDriver 點擊的運作方式是在元素的第一個用戶端矩形中間模擬滑鼠點擊 (如果沒有第一個用戶端矩形,則模擬用戶端矩形)。如要找出 ChromeDriver 嘗試點選的位置,最簡單的方法是開啟 Chrome 開發人員工具,並在呼叫點擊操作前,檢查要點擊的元素。在檢查器中選取元素,並留意代表元素的用戶端矩形的藍色方塊,如下圖所示。ChromeDriver 會嘗試點選第一部裝置的中間位置。

如果 ChromeDriver 擲回「元素無法點擊」的錯誤,最可能的原因就是使用者實際上無法點選該位置。如要進行測試,請將遊標放在第一個用戶端矩形中央,看看該位置是否可點擊。

在上述範例中,測試嘗試點選錨定元素。在此情況下,錨點無法點選,只有子圖片。由於圖片元素採用 margin-bottom 樣式,錨定元素中間位於可點擊的圖片邊界之外,因此 ChromeDriver 會擲回錯誤。如要進一步瞭解如何決定位置/調整大小,請參閱 w3 規格。如要修正上方情況,請點選圖片,而非錨點。

在測試嘗試下列情況下,通常會發生「元素無法點擊」錯誤:

  • 按一下錨點中可點擊的子系元素不在錨點範圍內 (如上所示)
  • 按一下完全或部分位於其他元素下的元素
  • 顯示固定疊加層時,按一下畫面外的元素 (該元素會捲動至檢視畫面中,但可能會捲動至固定疊加層下方)
  • 按一下中間無法點擊的元素 (例如某些類型的立體 SVG 元素)

這些問題通常可以透過以下方式解決:按一下指定元素的子項、透過程式輔助移除或隱藏封鎖元素、使用進階互動 API 點擊元素左上角的偏移,或是在 JavaScript 中模擬滑鼠點擊事件。

「元素無法點擊」錯誤

最有可能的原因是,在 ChromeDriver 確定元素的位置後,到 ChromeDriver 實際發生點擊位置前,元素的位置有所變更。

如要判斷這是否為問題所在,請從點擊中擷取例外狀況,並立即記錄元素目前的位置和大小。與該 ChromeDriver 回報的位置,確認嘗試點選例外狀況的位置,看看是否不同。在這種情況下,您必須等待元素停止移動,或再次嘗試點選。如果不行,請回報錯誤,提供用來重現問題的小型測試頁面 (即使只是偶爾會觸發問題)。

ChromeDriver 無法點選移動中的元素

系統不支援 ChromeDriver 的支援功能,如果元素最終停止,請等待作業執行。如果元素從未停止移動,ChromeDriver 並不保證點擊就能成功。