首頁  >  文章  >  後端開發  >  比較 Playwright .NET 中的 HTML

比較 Playwright .NET 中的 HTML

王林
王林原創
2024-07-18 18:16:31811瀏覽

Compare HTML in Playwright .NET

攝影:米格爾·阿。來自 Pexels 的 Padriñán

如果您對所使用的語言和框架不滿意,自動檢查文字(及其 HTML)可能是一個挑戰。學習和探索的時間有限本身就是一個挑戰。我為專案自動化煙霧測試的任務之一是驗證每個環境中的文本,每個特定設定都有自己的歡迎訊息。而且,我承認,我不太確定從哪裡開始。我知道我需要什麼,也知道從哪裡可以得到它。但將所有部分組合在一起並不像看起來那麼簡單。

我一開始需要取得資料庫存取權限。然後使用我們的設定來確保我可以使用應用程式設定(告訴框架在哪裡查找資訊並使用配置設定來保持資訊私有)在運行期間與資料庫連接。然後我可以將各個部分組合在一起,並從資料庫中獲取信息,並將其與顯示的資訊進行比較以進行測試。

手動操作很簡單 - 我應該猜到這意味著它不會像我希望的那麼容易。查看 HTML 並驗證佈局是否正確非常簡單。我對簡單的 HTML 佈局有足夠的了解,這是一次快速檢查,以確保單字正確並繼續。由於某種原因,我進行了多次冒煙測試以進行手動驗證。在這個和我需要檢查的事情清單之間,我將被鼓勵去學習、探索和尋求幫助以使這個自動化成功,並將其應用到其他測試中。

建立資料庫存取(以及正確的連接字串!)後,我就可以將頁面的文字設定為變數。這是最簡單的部分:我知道我在這裡做什麼,並且在完成它時感到很有成就感。我運行了 Playwright 測試,期望頁面上的文字按單字匹配,但不匹配 HTML 元件。我是對的 - 正確的單字就在那裡,但由於添加了 HTML,測試失敗了。

研究時間!第一次嘗試是使用 Page.ContentAsync(),這是一個取得頁面完整 HTML(包括標題)的命令。這應該允許我搜尋它,並找到文字的子字串,對嗎?作為第一個想法,這並不太可怕——我保存了我要查找的 HTML,我所需要做的就是遍歷整個文件內容來找到它。效率不高,當然也不是好的做法!它應該可以得到我需要的結果,然後可以迭代。

沒有。在整個頁面中找到子字串不可能很快,而且我希望我的自動化能夠很快。經過幾十次嘗試讓它按照我想要的方式工作並牢記業務規則(如果你無法在 45 分鐘內解決它,那麼是時候詢問其他人了),我與開發商之一。我知道他們很忙,正在創建一個非常需要的更新:會議結束時附有「如果需要,我們可以重新安排」的註釋。

在等待會議的同時,我繼續對此大驚小怪:縮小範圍的挑戰之一是div 的類別- 它的命名不好,並且使用Bootstrap,可能會出現重複的div同一個名字讓我在其他頁面上遇到了問題。與一個比我在這裡待得更久的人交談時,我發現這始終是頁面上的第三個 div。

現在我有了一個新的計劃來找到它 - 使用 Nth() 定位器,並找到正確的 div。我很想解決這個問題,寫下我現在正在輸入的帖子,並在會議之前討論下一個問題。正如你們中的許多人可能知道和/或懷疑的那樣,這是緊急事件發生的一個很好的觸發因素,而確實如此。這些計劃在組織者中逐頁複製了好幾天,直到我們配對開發的時候。

與這位開發人員合作總是一種享受:我們有很多共同點並且彼此尊重。作為獎勵,他們擅長教學!在快速回顧了目標是什麼之後,我們回顧了我為解決這個問題所做的嘗試。我留下了最後一篇,其中包含 IDE 中的錯誤,希望對您有所幫助。現在要取得進步!

使用偵錯器,我們驗證了 HTML 是否已正確拉入。這是我沒有完全檢查過的一個領域——值得慶幸的是它是正確的。我們一致認為 div 名稱不是很有用——他們最近所做的工作已經創建了具有相同名稱的其他 div,但位於不同的頁面上。這一點已被注意到,但直到我在測試中達到這一點才被擱置。

需要他們擁有的 NUnit 技能 - 驗證此部分的更簡單方法是使用 AreEqual 命令。這允許測試檢查字串是否相等。劇作家很固執。它需要的是定位器而不是字串——或者反過來——這只是需要太多的時間來製作。我很高興學習這項技術 - 我認為它在未來很有用!

經過幾次嘗試讓 Nth() 工作後,我們求助於使用那個奇怪的 div 類別——在確保它只在頁面上使用了一次之後。這給了我們一個起點——現在要弄清楚如何將 HTML 放入其中(幸運的是,這是該特定 div 中唯一的東西)。又經歷了幾次錯誤的開始,我最終放棄了該 div 的 ContentAsync() 不起作用的想法,引導他們找到我嘗試過但放棄的解決方案。

InnerHtmlAsync() 為我們提供了 div 的確切內容!空間等等。這是下一個絆腳石——我們已經沒有時間參加會議了。值得慶幸的是,他們願意再給我幾分鐘時間,主要是因為這是他們之前已經解決的問題。只需要刪除空格的語法:如果您好奇,請替換(“”,“”)。然後讓測試運行,直到我為手動驗證添加的下一個 PauseAsync() 將其停止一會兒。

他們去吃午餐了,我花了接下來的時間準備筆記。我還有其他東西要找——現在更多的是如何做的線索。

以上是比較 Playwright .NET 中的 HTML的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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