Cypress 的網路:Heroku 的「網路」遊樂場的真實場景
我最近去了chatGPT 並詢問有哪些好的自動化練習,在同一系統上工作一段時間後,或者只為特定類型的用戶流提供自動化,我們最終可能會忘記一些事情,所以我問了一些練習網站,然後我找到了互聯網。
儘管該網站可能看起來很簡陋,但它們仍然為您提供了一個嘗試自動化的地方,而目前,這就是我所需要的。我花了一些時間使用 Cypress 解決了一些經典的網路挑戰。
因此,言歸正傳,讓我們深入研究我自動化的一些場景,涵蓋從神奇般來來去去的按鈕、奇怪的拖放、與文件相關的自動化和一些快速 Shadow DOM 工作的所有內容!
- 拖放: 如果您曾經嘗試過自動化拖放操作,您就會知道它從來沒有看起來那麼簡單。雖然 Cypress 對某些互動有原生支援(我確實嘗試過,哈哈),但仍然需要一些創造力才能在這裡進行拖放測試。
在本例中,我使用觸發器('mousedown')、觸發器('dragover')和觸發器('mouseup')嘗試了自訂拖放指令。由於該網站上實現該功能的方式,我必須更深入地挖掘才能使該測試正常工作,但對於大多數現代應用程式來說,cypress 插件應該足夠了(謝天謝地)。
- 新增/刪除元素:
這個練習中的「加入元素」按鈕理論上很簡單,但有趣的是這個遊樂場有時會試圖擾亂你的期望,哈哈。點擊它一次,然後...出現一個刪除按鈕(這不是超級直觀,但哦,好吧,你只需要使用它)。訣竅是確保我們在測試中以穩定且可重複的方式處理添加-刪除舞蹈。使用 Cypress,我們檢查按鈕是否出現,新增更多按鈕,然後將它們一一刪除,確保順序不會出現問題。
專業提示:
追蹤出現和消失的元素可能很棘手,但 Cypress .should('exist') 和 .should('not.exist') 斷言可以很好地處理這個問題。另外,您每次都會得到甜蜜的視覺確認。
- 動態內容:
我認為這是本文中最簡單的範例,但它仍然很有趣,這個想法只是創建測試來確保內容的格式是一個常數,即使它的內容會總是改變......不過對於學習仍然有用。
Cypress 可以確認元素按預期加載,而無需對實際內容過於挑剔,從而保持測試的彈性。
- 動態控制:
對於這個控件,諸如複選框和按鈕之類的控件會根據使用者互動而出現或消失。有些需要等待載入指示器消失。在這裡,Cypress 的 cy.wait 和 .should('be.visible') 是關鍵。
快速提示:
不要使用硬編碼的等待,而是使用 .should('exist') 和 .should('be.disabled') 等斷言來對頁面的狀態做出反應。這使得測試更加穩健和適應性更強。
- 檔案下載:
下載檔案可能聽起來很簡單,直到您必須證明它確實發生了。使用 Cypress,我們可以採取不同的措施來確保檔案確實已下載。
我們可以做不同的事情來確保下載完成,對於這個應用程序,我只是確保在單擊鏈接後我們在下載資料夾中擁有該文件。非常簡單,一旦文件存在,測試就會自動通過。可以套用其他策略,例如使用 cy.intercept 來驗證是否觸發了下載請求。
- 檔案上傳: 就像檔案下載一樣,Cypress 的檔案上傳也非常流暢。
對於這種類型的場景,您可以使用 cypress-file-upload 之類的東西
這是一個非常好用的插件,並確認該檔案已被應用程式處理。
在我的範例中,所有這些都是透過.selectFile 命令完成的,並且有一種方法可以做到這一點,甚至無需發送實際文件,只需使用Cypress.Buffer 就可以解決問題(您可以看到裡面的實作)下面連結的儲存庫)。
這適用於透過點擊按鈕完成的上傳以及拖放上傳,非常簡單......謝謝賽普拉斯? .
- 影子 DOM:
Shadow DOM 的神秘之處在於元素就像主 DOM 中的秘密。它們被隱藏起來,不遵循常規的 CSS 可見性規則,這可能有點棘手,這取決於您需要如何在它們上運行自動化。值得慶幸的是,Cypress 支持 Shadow 命令來刺穿這一面紗並找到那些隱藏的元素。
對於這些測試,我使用cy.get('element').shadow() 來存取Shadow DOM 中的元素,然後,不再有問題或困難,您可以像您一樣存取元素並對其進行斷言與普通的。
現在就是這樣..只是簡單的6 個範例,說明我們如何使用Cypress 來處理一些基本的瀏覽器自動化使用,以及如何利用它來讓您的生活更輕鬆地處理此類情況.
準備好嘗試了嗎?
如果您有興趣嘗試這些測試或根據您的專案調整它們,我已在我的 GitHub 儲存庫上提供了程式碼。測試套件非常輕量,所以不應該有太多疑問點,而且我們有 GitHub Actions 流程,您可以使用它,這樣您就可以看到它是如何運作的!謝謝您,我們下次再見!
以上是Cypress 的網路:Heroku 的「網路」遊樂場的真實場景的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。
