」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 測試自動化:使用 Java 和 TestNG 進行 Selenium 指南

測試自動化:使用 Java 和 TestNG 進行 Selenium 指南

發佈於2024-11-05
瀏覽:807

测试自动化已成为软件开发过程中不可或缺的一部分,使团队能够提高效率、减少手动错误并以更快的速度交付高质量的产品。 Selenium 是一个用于自动化 Web 浏览器的强大工具,与 Java 的多功能性相结合,为构建可靠且可扩展的自动化测试套件提供了一个强大的框架。使用 Selenium Java 进行测试自动化可以利用工具和编程语言的优势来创建有效的测试场景。

为什么选择硒?

Selenium 是一种广泛用于自动化 Web 浏览器的开源工具。它提供了一套用于跨不同浏览器和平台进行 Web 应用程序测试的工具。特别是 Selenium WebDriver,允许用户以编程方式控制 Web 浏览器,从而能够使用 Selenium TestNG 等框架创建强大的自动化测试。

以下是 Selenium 成为测试自动化首选的一些原因:

  • 跨浏览器兼容性:Selenium WebDriver 支持多种浏览器,包括 Chrome、Firefox、Safari 和 Edge,确保跨不同环境的全面测试覆盖。
  • 语言支持: Selenium WebDriver 提供与多种编程语言的兼容性,包括 Java、Python、C# 和 JavaScript。这种灵活性允许测试人员使用他们喜欢的编程语言。
  • 丰富的生态系统:Selenium 拥有庞大的生态系统和蓬勃发展的社区,提供对大量资源、插件和集成的访问,以增强测试过程。
  • 元素交互:Selenium 提供了使用 ID、名称、XPath、CSS 选择器等各种策略来定位网页上元素的机制。这使得测试人员能够准确地与特定元素进行交互。
  • 处理警报和弹出窗口:Selenium 可以处理测试过程中出现的警报、弹出窗口和对话框,从而实现更全面的自动化场景。
  • 动态 Web 元素处理: Selenium 支持处理网页上的动态元素,例如由 AngularJS、React 或 Vue.js 等 JavaScript 框架生成的元素
  • 测试框架集成:Selenium 可以与 JUnit、TestNG、NUnit 和 Pytest 等流行的测试框架集成,提供报告、并行执行和数据参数化等附加功能。
  • 与持续集成 (CI) 工具集成: Selenium 可以使用 Jenkins、Travis CI 或 CircleCI 等工具无缝集成到 CI/CD 管道中,从而允许将自动化测试作为软件开发生命周期的一部分。

要进一步了解 Selenium,您可以查看其官方文档。

利用 Java 实现自动化

Java 是一种广泛采用的编程语言,以其简单性、稳健性和平台独立性而闻名。当与 Selenium 结合时,Java 使测试人员能够轻松构建复杂的自动化框架。 Java自动化利用该语言的强大功能,提高了测试脚本的效率和有效性。

这就是为什么 Java 是 Selenium 自动化的绝佳选择:

  • 强大的面向对象范式:Java 的面向对象特性有利于创建模块化、可维护的测试脚本,从而更容易管理复杂的测试套件。
  • 丰富的库和框架:Java 拥有丰富的库和框架生态系统,可以补充 Selenium,例如 TestNG、JUnit 和 Apache Maven,从而实现无缝集成和高级测试管理。
  • 平台独立性:Java“一次编写,随处运行”的理念确保在一个平台上开发的测试脚本可以在任何具有Java虚拟机(JVM)的平台上执行,增强了可移植性和可扩展性。

前提步骤

在本博客中,在实践过程中,我们针对各自的库和应用程序使用了以下版本:

  • Java版本:19.0.2
  • IntelliJ 版本:2023.3.6
  • Selenium – Java 版本:4.18.1
  • TestNG版本:7.9.0

下载并安装JDK:

要编写和执行Java程序,您需要Java开发工具包(JDK),其中包括Java运行时环境(JRE)。 JRE 在安装时与 JDK 捆绑在一起。

即使要运行依赖于 Java 的应用程序,例如 IntelliJ IDE,您仍然需要安装 JDK。

首先,下载 Java,安装它并相应地设置环境路径。您可以在此网站上找到有关如何配置它的指南。配置完成后,您可以通过在命令提示符中键入 java -version 来验证安装,该命令会显示已安装的 Java 版本详细信息。

Test Automation: Guide to Selenium with Java and TestNG

安装IntelliJ:

要下载IntelliJ,请访问其官方网站并选择社区版本的.exe文件。选择文件后将开始下载。

下载完成后,启动.exe文件并继续安装IntelliJ。

您可以参考本网站提供的说明来获取安装 IntelliJ 的指导。

测试用例创建

1。在IntelliJ中创建Maven项目:

  • 启动 IntelliJ IDEA 并从菜单中选择“New Project”。

Test Automation: Guide to Selenium with Java and TestNG

  • 指定项目名称和位置,选择Java作为语言,选择Maven作为构建系统,设置JDK版本,最后点击“创建”。

Test Automation: Guide to Selenium with Java and TestNG

  • 确保您的 Maven 项目在创建时遵循此结构。

Test Automation: Guide to Selenium with Java and TestNG

2.在pom.xml中添加依赖项:
创建新项目后,第一步是在 pom.xml 文件中包含 Selenium 和 TestNG 等依赖项。您可以在 Maven Repository 官方网站上找到这些依赖项的最新版本。

3.使用 Selenium TestNG 创建 Java 测试用例

  • 接下来,在 src > test > java 目录中生成一个 Java 类名 SampleTest。

Test Automation: Guide to Selenium with Java and TestNG

  • 该测试脚本利用 TestNG 注释在 JigNect 网站上执行自动化测试。以下是所使用的每个 TestNG 注释的简要说明:

  • @BeforeMethod: setUpBrowser方法用@BeforeMethod注释,表明它应该在每个测试方法之前运行。在本例中,它会初始化 ChromeDriver、最大化浏览器窗口并导航到指定的 URL。

  • Test: 此注释将方法标记为测试方法。 SampleTest() 方法是此脚本中的实际测试用例。它验证用户是否被重定向到 JigNect 网站的主页,单击 QA 博客页面链接,并确认用户位于 QA 博客页面。

  • @AfterMethod: closeBrowser方法用@AfterMethod注释,表明它应该在每个测试方法之后运行。在这种情况下,它会在测试执行完成后关闭浏览器。

  • 如果您有兴趣了解更多关于TestNG的信息,请访问其官方网站了解更多信息。

  • 总体而言,此测试脚本可确保网站导航和页面重定向按预期工作,并使用断言来验证每个步骤的预期结果。

运行创建的测试用例并检查结果

1。测试脚本编写完成后,继续执行测试并仔细分析结果。

  • 要运行测试用例,请转到测试类,右键单击它,然后选择“运行”选项。结果将显示在 IntelliJ 的运行工具窗口中。

Test Automation: Guide to Selenium with Java and TestNG

2.测试运行结果

  • IntelliJ 的运行工具窗口中显示的结果提供了有关测试运行的重要信息。
  • 如您所见,我们创建的测试已通过并且按预期正常运行。
  • 通过查看这些结果,我们可以了解哪些测试通过、失败或被跳过。
  • 这有助于我们改进测试流程并使我们的脚本更好、更精确。

Test Automation: Guide to Selenium with Java and TestNG

结论

Selenium 仍然是自动化 Web 应用程序测试的关键工具,提供跨浏览器测试、多语言支持、可扩展性、并行测试执行和强大的社区支持等功能。虽然 Selenium 在提供高质量软件方面很受欢迎,但它也有一些局限性,例如设置复杂性、测试不稳定、有限的非 Web 技术支持和维护要求。通过了解其优点和缺点,团队可以有效地利用 Selenium 来实现其测试目标并提供卓越的用户体验。

总之,通过博客上展示的实际示例,我们对 Selenium 及其基础知识有了深入的了解。这些实践经验让我们更加准确有效地掌握了Selenium的概念。此外,Selenium 由于其强大的功能和多功能性而成为自动化测试的首选。在未来的博客文章中,我们将撰写有关 Selenium 高级主题的内容,涵盖动态框架、页面对象类、数据工厂、处理身份验证、iframe、元素策略、等待策略等。

与我们保持联系,探索与自动化测试相关的其他主题,例如实现动态框架、使用页面对象类、数据工厂、数据对象等等。

通过Jignect继续练习和探索,进一步掌握这些强大的工具。

见证我们细致的方法和尖端的解决方案如何将质量和性能提升到新的高度。开始您进入卓越软件测试世界的旅程。要了解更多信息,请参阅工具和技术 & QA 服务

如果您想了解更多关于我们提供的优质服务,请务必联系
测试愉快! ?

版本聲明 本文轉載於:https://dev.to/jignect_technologies/test-automation-guide-to-selenium-with-java-and-testng-5820?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何使用PHP的password_verify函數安全地驗證使用者密碼?
    如何使用PHP的password_verify函數安全地驗證使用者密碼?
    使用 PHP 解密加密密碼許多應用程式使用密碼雜湊等加密演算法安全地儲存使用者密碼。然而,在驗證登入嘗試時,將輸入密碼與加密的儲存版本進行比較非常重要。 加密問題password_hash 使用 Bcrypt,一元加密演算法方式雜湊演算法,表示加密的密碼無法逆轉或解密。這是一項安全功能,可確保即使資...
    程式設計 發佈於2024-11-05
  • 學習 Vue 部分 建立天氣應用程式
    學習 Vue 部分 建立天氣應用程式
    深入研究 Vue.js 就像在 DIY 工具包中發現了一個新的最喜歡的工具——直觀、靈活,而且功能強大得驚人。我接觸 Vue 的第一個副業專案是一個天氣應用程序,它教會了我很多關於框架功能以及一般 Web 開發的知識。這是我到目前為止所學到的。 1. Vue 入門:簡單與強大 Vu...
    程式設計 發佈於2024-11-05
  • NFT 預覽卡組件
    NFT 預覽卡組件
    ?剛剛完成了我的最新專案:使用 HTML 和 CSS 的「NFT 預覽卡元件」! ?查看並探索 GitHub 上的程式碼。歡迎反饋! ? GitHub:[https://github.com/khanimran17/NFT-preview-card-component] ?現場示範:[https:...
    程式設計 發佈於2024-11-05
  • Android 應用程式如何連接到 Microsoft SQL Server 2008?
    Android 應用程式如何連接到 Microsoft SQL Server 2008?
    將Android 應用程式連接到Microsoft SQL Server 2008Android 應用程式可以無縫連接到中央資料庫伺服器,包括Microsoft SQL Server 2008。這種連接允許開發人員從其行動應用程式存取和管理儲存在遠端伺服器上的資料。 連接方法雖然提供的範例程式碼專注...
    程式設計 發佈於2024-11-05
  • 以下是一些基於問題的標題選項,重點關注核心問題:

* C++ std::可選:為什麼沒有對引用類型進行專門化? (直接、切題)
* C++ std::option 中的參考類型
    以下是一些基於問題的標題選項,重點關注核心問題: * C++ std::可選:為什麼沒有對引用類型進行專門化? (直接、切題) * C++ std::option 中的參考類型
    C 中的可選:為什麼沒有專門化引用類型? 儘管在像 Boost 這樣的庫中存在對引用類型的專門化,C標準庫的 std::Optional 不提供這樣的功能。這項決定引發了對其理由和潛在替代機制的詢問。 遺漏背後的理由在討論 n3406(可選提案)期間,有人提出了擔憂關於包含可選參考文獻。認識到這些反...
    程式設計 發佈於2024-11-05
  • 評估機器學習分類模型
    評估機器學習分類模型
    大纲 模型评估的目标是什么? 模型评估的目的是什么,有哪些 常见的评估程序? 分类准确率有什么用,它的作用是什么 限制? 混淆矩阵如何描述一个 分类器? 可以从混淆矩阵计算哪些指标? T模型评估的目标是回答问题; 不同型号如何选择? 评估机器学习的过程有助于...
    程式設計 發佈於2024-11-05
  • 如何消除 Eval-Base64_Decode PHP 病毒並保護您的網站?
    如何消除 Eval-Base64_Decode PHP 病毒並保護您的網站?
    如何像PHP 病毒檔案一樣刪除Eval-Base64_Decode採用eval-base64_decode 技術的病毒,例如您的病毒已經描述過,可能會很麻煩。我們將幫助您了解病毒的性質及其潛在漏洞,並提供有關如何消除病毒的全面指南。 了解病毒此特定病毒以 eval-base64_decode 程式碼...
    程式設計 發佈於2024-11-05
  • 如何在 Serp 中排名 4
    如何在 Serp 中排名 4
    搜索引擎排名页面 (SERP) 是网站争夺可见性和流量的地方。到 2024 年,在 Google 和其他搜索引擎上的高排名仍然对在线成功至关重要。然而,SEO(搜索引擎优化)多年来已经发生了变化,并将继续发展。如果您想知道如何在 2024 年提高 SERP 排名,这里有一个简单的指南可以帮助您了解最...
    程式設計 發佈於2024-11-05
  • 如何使用多處理在 Python 進程之間共享鎖
    如何使用多處理在 Python 進程之間共享鎖
    在Python 中的進程之間共享鎖定當嘗試使用pool.map() 來定位具有多個參數(包括Lock() 物件)的函數時,它是對於解決子進程之間共享鎖的問題至關重要。由於 pickling 限制,傳統的 multiprocessing.Lock() 無法直接傳遞給 Pool 方法。 選項 1:使用 ...
    程式設計 發佈於2024-11-05
  • Type Script 中 readonly 和 const 的區別
    Type Script 中 readonly 和 const 的區別
    這兩個功能的相似之處在於它們都是不可分配的。 能具體解釋一下嗎? 在這篇文章中,我將分享它們之間的差異。 const 防止重新分配給變數。 在這種情況下,hisName 是一個不能重新分配的變數。 const hisName = 'Michael Scofield' hisN...
    程式設計 發佈於2024-11-05
  • 如何使用 Range 函式在 Python 中複製 C/C++ 循環語法?
    如何使用 Range 函式在 Python 中複製 C/C++ 循環語法?
    Python 中的 for 迴圈:擴展 C/C 迴圈語法在程式設計中,for 迴圈是迭代序列的基本結構。雖然 C/C 採用特定的循環初始化語法,但 Python 提供了更簡潔的方法。不過,Python 中有一種模仿 C/C 循環風格的方法。 實作循環運算:for (int k = 1; k <...
    程式設計 發佈於2024-11-05
  • TechEazy Consulting 推出全面的 Java、Spring Boot 和 AWS 培訓計畫並提供免費實習機會
    TechEazy Consulting 推出全面的 Java、Spring Boot 和 AWS 培訓計畫並提供免費實習機會
    TechEazy Consulting 很高興地宣布推出我們的綜合培訓計劃,專為希望轉向後端開發使用Java、Spring Boot的初學者、新手和專業人士而設計,以及AWS。 此4個月的帶薪培訓計劃之後是2個月的無薪實習,您可以在實際專案中應用您的新技能—無需任何額外的培訓費用。對於那些希望填補...
    程式設計 發佈於2024-11-05
  • Polyfills-填充物還是縫隙? (第 1 部分)
    Polyfills-填充物還是縫隙? (第 1 部分)
    幾天前,我們在組織的 Teams 聊天中收到一條優先訊息,內容如下:發現安全漏洞 - 偵測到 Polyfill JavaScript - HIGH。 舉個例子,我在一家大型銀行公司工作,你必須知道,銀行和安全漏洞就像主要的敵人。因此,我們開始深入研究這個問題,並在幾個小時內解決了這個問題,我將在下...
    程式設計 發佈於2024-11-05
  • 移位運算子與位元簡寫賦值
    移位運算子與位元簡寫賦值
    1。移位運算子 :向右移動。 >>>:無符號右移(零填充)。 2.移位運算子的一般語法 value > num-bits:將值位向右移動,保留符號位。 value >>> num-bits:透過在左側插入零將值位向右移動。 3.左移 每次左移都會導致該值的所有位元向左移動一位。 右側插入0...
    程式設計 發佈於2024-11-05
  • 如何使用 VBA 從 Excel 建立與 MySQL 資料庫的連線?
    如何使用 VBA 從 Excel 建立與 MySQL 資料庫的連線?
    VBA如何在Excel中連接到MySQL資料庫? 使用VBA連接到MySQL資料庫嘗試連接使用 VBA 在 Excel 中存取 MySQL 資料庫有時可能具有挑戰性。在您的情況下,您在嘗試建立連線時遇到錯誤。 若要使用 VBA 成功連線至 MySQL 資料庫,請依照下列步驟操作:Sub Connec...
    程式設計 發佈於2024-11-05

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

Copyright© 2022 湘ICP备2022001581号-3