」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 比較 Playwright .NET 中的 HTML

比較 Playwright .NET 中的 HTML

發佈於2024-11-01
瀏覽:535

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() 将其暂时停止。

他们去吃午饭了,我花了接下来的时间准备笔记。我还有其他东西要找——现在更多的是如何去做的线索。

版本聲明 本文轉載於:https://dev.to/arleneandrews/compare-html-in-playwright-net-4jfh如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 哪種在JavaScript中聲明多個變量的方法更可維護?
    哪種在JavaScript中聲明多個變量的方法更可維護?
    在JavaScript中聲明多個變量:探索兩個方法在JavaScript中,開發人員經常遇到需要聲明多個變量的需要。對此的兩種常見方法是:在單獨的行上聲明每個變量: 當涉及性能時,這兩種方法本質上都是等效的。但是,可維護性可能會有所不同。 第一個方法被認為更易於維護。每個聲明都是其自己的語句,使...
    程式設計 發佈於2025-04-07
  • 為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    使用php dateTime修改月份:發現預期的行為在使用PHP的DateTime類時,添加或減去幾個月可能並不總是會產生預期的結果。正如文檔所警告的那樣,“當心”這些操作的“不像看起來那樣直觀。 考慮文檔中給出的示例:這是內部發生的事情: 現在在3月3日添加另一個月,因為2月在2001年只有2...
    程式設計 發佈於2025-04-07
  • 如何使用Java.net.urlConnection和Multipart/form-data編碼使用其他參數上傳文件?
    如何使用Java.net.urlConnection和Multipart/form-data編碼使用其他參數上傳文件?
    使用http request 上傳文件上傳到http server,同時也提交其他參數,java.net.net.urlconnection and Multipart/form-data Encoding是普遍的。 Here's a breakdown of the process:Mu...
    程式設計 發佈於2025-04-07
  • 如何在GO編譯器中自定義編譯優化?
    如何在GO編譯器中自定義編譯優化?
    在GO編譯器中自定義編譯優化 GO中的默認編譯過程遵循特定的優化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    程式設計 發佈於2025-04-07
  • 如何使用Regex在PHP中有效地提取括號內的文本
    如何使用Regex在PHP中有效地提取括號內的文本
    php:在括號內提取文本在處理括號內的文本時,找到最有效的解決方案是必不可少的。一種方法是利用PHP的字符串操作函數,如下所示: 作為替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式來搜索特...
    程式設計 發佈於2025-04-07
  • 如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    postgresql:為每個唯一標識符提取最後一行,在Postgresql中,您可能需要遇到與在數據庫中的每個不同標識相關的信息中提取信息的情況。考慮以下數據:[ 1 2014-02-01 kjkj 在數據集中的每個唯一ID中檢索最後一行的信息,您可以在操作員上使用Postgres的有效效率: ...
    程式設計 發佈於2025-04-07
  • 如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求模擬瀏覽器行為,以及偽造的用戶代理提供了一個用戶 - 代理標頭一個有效方法是提供有效的用戶式header,以提供有效的用戶 - 設置,該標題可以通過browser和Acterner Systems the equestersystermery和操作系統。通過模仿像Chro...
    程式設計 發佈於2025-04-07
  • Android如何向PHP服務器發送POST數據?
    Android如何向PHP服務器發送POST數據?
    在android apache httpclient(已棄用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    程式設計 發佈於2025-04-07
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在時間戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源於遺留實現的關注,這些限制需要對當前的_timestamp功能進行特定的實現。 創建表`foo`( `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-04-07
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    刪除匿名事件偵聽器將匿名事件偵聽器添加到元素中會提供靈活性和簡單性,但是當要刪除它們時,可以構成挑戰,而無需替換元素本身就可以替換一個問題。 element? element.addeventlistener(event,function(){/在這里工作/},false); 要解決此問題,請考...
    程式設計 發佈於2025-04-07
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python import codecs import codecs import codecs 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有...
    程式設計 發佈於2025-04-07
  • 為什麼PYTZ最初顯示出意外的時區偏移?
    為什麼PYTZ最初顯示出意外的時區偏移?
    與pytz 最初從pytz獲得特定的偏移。例如,亞洲/hong_kong最初顯示一個七個小時37分鐘的偏移: 差異源利用本地化將時區分配給日期,使用了適當的時區名稱和偏移量。但是,直接使用DateTime構造器分配時區不允許進行正確的調整。 example pytz.timezone(&#...
    程式設計 發佈於2025-04-07
  • 為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    在CSS 問題:不正確的代碼: 全球範圍將所有餘量重置為零,如提供的代碼所建議的,可能會導致意外的副作用。解決特定的保證金問題是更建議的。 例如,在提供的示例中,將以下代碼添加到CSS中,將解決餘量問題: body H1 { 保證金頂:-40px; } 此方法更精確,避免了由全局保證金重置...
    程式設計 發佈於2025-04-07
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。讓我們考慮以下查詢: select data d.data_ti...
    程式設計 發佈於2025-04-07
  • 如何從Google API中檢索最新的jQuery庫?
    如何從Google API中檢索最新的jQuery庫?
    從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本編號的替代方法,它是使用以下語法:獲取最新版本:未壓縮)While these legacy URLs still remain in use, it is recommended ...
    程式設計 發佈於2025-04-07

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3