首頁 web前端 js教程 Cypress 的網路:Heroku 的「網路」遊樂場的真實場景

Cypress 的網路:Heroku 的「網路」遊樂場的真實場景

Nov 08, 2024 pm 12:08 PM

The internet with Cypress: Real-World Scenarios from Heroku’s “The Internet” Playground

我最近去了chatGPT 並詢問有哪些好的自動化練習,在同一系統上工作一段時間後,或者只為特定類型的用戶流提供自動化,我們最終可能會忘記一些事情,所以我問了一些練習網站,然後我找到了互聯網。
儘管該網站可能看起來很簡陋,但它們仍然為您提供了一個嘗試自動化的地方,而目前,這就是我所需要的。我花了一些時間使用 Cypress 解決了一些經典的網路挑戰。
因此,言歸正傳,讓我們深入研究我自動化的一些場景,涵蓋從神奇般來來去去的按鈕、奇怪的拖放、與文件相關的自動化和一些快速 Shadow DOM 工作的所有內容!

  1. 拖放: 如果您曾經嘗試過自動化拖放操作,您就會知道它從來沒有看起來那麼簡單。雖然 Cypress 對某些互動有原生支援(我確實嘗試過,哈哈),但仍然需要一些創造力才能在這裡進行拖放測試。

在本例中,我使用觸發器('mousedown')、觸發器('dragover')和觸發器('mouseup')嘗試了自訂拖放指令。由於該網站上實現該功能的方式,我必須更深入地挖掘才能使該測試正常工作,但對於大多數現代應用程式來說,cypress 插件應該足夠了(謝天謝地)。

  1. 新增/刪除元素

這個練習中的「加入元素」按鈕理論上很簡單,但有趣的是這個遊樂場有時會試圖擾亂你的期望,哈哈。點擊它一次,然後...出現一個刪除按鈕(這不是超級直觀,但哦,好吧,你只需要使用它)。訣竅是確保我們在測試中以穩定且可重複的方式處理添加-刪除舞蹈。使用 Cypress,我們檢查按鈕是否出現,新增更多按鈕,然後將它們一一刪除,確保順序不會出現問題。

專業提示:
追蹤出現和消失的元素可能很棘手,但 Cypress .should('exist') 和 .should('not.exist') 斷言可以很好地處理這個問題。另外,您每次都會得到甜蜜的視覺確認。

  1. 動態內容

我認為這是本文中最簡單的範例,但它仍然很有趣,這個想法只是創建測試來確保內容的格式是一個常數,即使它的內容會總是改變......不過對於學習仍然有用。

Cypress 可以確認元素按預期加載,而無需對實際內容過於挑剔,從而保持測試的彈性。

  1. 動態控制

對於這個控件,諸如複選框和按鈕之類的控件會根據使用者互動而出現或消失。有些需要等待載入指示器消失。在這裡,Cypress 的 cy.wait 和 .should('be.visible') 是關鍵。

快速提示:

不要使用硬編碼的等待,而是使用 .should('exist') 和 .should('be.disabled') 等斷言來對頁面的狀態做出反應。這使得測試更加穩健和適應性更強。

  1. 檔案下載:

下載檔案可能聽起來很簡單,直到您必須證明它確實發生了。使用 Cypress,我們可以採取不同的措施來確保檔案確實已下載。

我們可以做不同的事情來確保下載完成,對於這個應用程序,我只是確保在單擊鏈接後我們在下載資料夾中擁有該文件。非常簡單,一旦文件存在,測試就會自動通過。可以套用其他策略,例如使用 cy.intercept 來驗證是否觸發了下載請求。

  1. 檔案上傳: 就像檔案下載一樣,Cypress 的檔案上傳也非常流暢。

對於這種類型的場景,您可以使用 cypress-file-upload 之類的東西
這是一個非常好用的插件,並確認該檔案已被應用程式處理。

在我的範例中,所有這些都是透過.selectFile 命令完成的,並且有一種方法可以做到這一點,甚至無需發送實際文件,只需使用Cypress.Buffer 就可以解決問題(您可以看到裡面的實作)下面連結的儲存庫)。

這適用於透過點擊按鈕完成的上傳以及拖放上傳,非常簡單......謝謝賽普拉斯? .

  1. 影子 DOM:

Shadow DOM 的神秘之處在於元素就像主 DOM 中的秘密。它們被隱藏起來,不遵循常規的 CSS 可見性規則,這可能有點棘手,這取決於您需要如何在它們上運行自動化。值得慶幸的是,Cypress 支持 Shadow 命令來刺穿這一面紗並找到那些隱藏的元素。

對於這些測試,我使用cy.get('element').shadow() 來存取Shadow DOM 中的元素,然後,不再有問題或困難,您可以像您一樣存取元素並對其進行斷言與普通的。


現在就是這樣..只是簡單的6 個範例,說明我們如何使用Cypress 來處理一些基本的瀏覽器自動化使用,以及如何利用它來讓您的生活更輕鬆地處理此類情況.

準備好嘗試了嗎?

如果您有興趣嘗試這些測試或根據您的專案調整它們,我已在我的 GitHub 儲存庫上提供了程式碼。測試套件非常輕量,所以不應該有太多疑問點,而且我們有 GitHub Actions 流程,您可以使用它,這樣您就可以看到它是如何運作的!謝謝您,我們下次再見!

以上是Cypress 的網路:Heroku 的「網路」遊樂場的真實場景的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1277
29
C# 教程
1256
24
Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

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

JavaScript和Web:核心功能和用例 JavaScript和Web:核心功能和用例 Apr 18, 2025 am 12:19 AM

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

JavaScript在行動中:現實世界中的示例和項目 JavaScript在行動中:現實世界中的示例和項目 Apr 19, 2025 am 12:13 AM

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

了解JavaScript引擎:實施詳細信息 了解JavaScript引擎:實施詳細信息 Apr 17, 2025 am 12:05 AM

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

Python vs. JavaScript:社區,圖書館和資源 Python vs. JavaScript:社區,圖書館和資源 Apr 15, 2025 am 12:16 AM

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

Python vs. JavaScript:開發環境和工具 Python vs. JavaScript:開發環境和工具 Apr 26, 2025 am 12:09 AM

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

C/C在JavaScript口譯員和編譯器中的作用 C/C在JavaScript口譯員和編譯器中的作用 Apr 20, 2025 am 12:01 AM

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

從網站到應用程序:JavaScript的不同應用 從網站到應用程序:JavaScript的不同應用 Apr 22, 2025 am 12:02 AM

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

See all articles