使用 Cypress 測驗涉及按鍵的更復雜的用戶輸入行為讓我陷入了困境。該應用程式使用熱鍵來觸發操作模式,并且不能讓隨機滑鼠/指標事件在按下鍵時觸發。一種假設的情況是
- 按住 alt 鍵
- 畫一個多邊形
- 釋放 alt 鍵
使用cy.type前兩個步驟中的結果注冊為雙擊,執行不需要的操作。釋放鍵操作會導致多一個點(螢屏中間)被添加到多邊形中。
我嘗試了許多type()呼叫變體,嘗試用trigger()(甚至沒有觸發)替換它,有和沒有focus()組合,例如
cy.get(selector)
.trigger('keydown', { eventConstructor: 'KeyboardEvent', key: key, release: false })
.trigger('keypress', { eventConstructor: 'KeyboardEvent', key: key, release: false })
嘗試了真正的柏樹事件插件(似乎不支持沒有釋放操作的按鍵)。
你如何在KeyboardEvent沒有亂七八糟的情況下觸發一個簡單的事件?

uj5u.com熱心網友回復:
如果您想對發送的事件進行精細控制,請使用純 JS dispatchEvent()
cy.get(selector).then($el => {
$el[0].dispatchEvent(new KeyboardEvent('keypress', {'key': 'a'}))
})
不起作用的事實trigger()表明您沒有確定正確的事件或目標,它應該與dispatchEvent().
由于您正在繪圖,也許您應該查看滑鼠事件而不是鍵盤事件(除非應用程式應該使用鍵盤進行繪圖)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/515872.html
