”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Appium 与 Java:综合指南

Appium 与 Java:综合指南

发布于2024-11-08
浏览:356

您刚刚开始进行 Appium Java 移动自动化测试吗?您来对地方了!该博客是您制作第一个测试用例的指南。我们将指导您设置环境、掌握基本的 Appium 命令以及在移动应用程序上自动执行简单的操作。准备踏上你的appium移动测试之旅,一步一步!

如果您还没有,请随时浏览我们的 Appium 设置博客文章,其中我们介绍了 Appium 设置和基本命令导航。这是快速启动您的 Appium 测试冒险的绝佳资源!看看就开始你的学习吧!奠定了基础后,让我们继续构建您的第一个测试用例!

使用 Maven 构建系统在 IntelliJ 中创建项目

  • Maven 是一个基于 POM(项目对象模型)的开源构建自动化和项目管理工具。
  • 它使用项目对象模型(POM)文件来描述项目结构、依赖关系和构建配置。
  • 它用于项目构建、依赖管理和文档。
  • 它是用 Java 编写的,也可用于创建用其他语言编写的项目,例如 C#、Scala 和 Ruby。
  • Apache Maven 3.9.6 是最新版本。这是向所有用户推荐的版本。

我们可以通过执行以下操作在 IntelliJ 中构建 Maven 项目

  1. 打开 IntelliJ IDE
  2. 单击主菜单
  3. 选择文件 > 新建 > 项目
  4. 在“新建项目”弹出窗口中,提供项目名称
  5. 选择 Maven 作为构建系统
  6. 点击创建按钮。

Appium With Java: A Comprehensive Guide

使用Maven构建系统创建项目后,项目结构下会自动生成pom.xml文件

Appium With Java: A Comprehensive Guide

Pom.xml 文件将如下所示

Appium With Java: A Comprehensive Guide

  • 为了创建我们的第一个测试用例,我们需要以下依赖项
  1. java 客户端
  2. 测试
  • 在 pom.xml 文件中添加以下 Appium Java 客户端依赖项。从此 [URL](https://mvnrepository.com/).
  • 获取最新依赖项

Appium With Java: A Comprehensive Guide

  • 添加依赖后,按照以下步骤下载到本地电脑
  1. 保存 pom.xml 并通过右键单击项目并更新 Maven 内的项目来更新 Maven 项目。
  2. 保存项目后,所有依赖项开始从 Maven 存储库下载到本地计算机。
  3. 所有依赖包下载到C盘m2文件夹下。
  4. 在下载依赖项之前,Maven 首先验证这些依赖项是否已经存在于 m2 文件夹中。如果是,则 Maven 直接从那里获取,否则 Maven 下载它。
  5. 作为 appium-java 依赖项,我们可以根据需要在 pom.xml 中添加更多依赖项。

在pom.xml中配置TestNG依赖

  • 在处理Java Selenium项目时,TestNG依赖项用于将TestNG测试框架集成到项目中。

什么是 TestNG 框架?

  • TestNG 是一个 Java 开源测试自动化框架。 TestNG 提供注释、数据驱动测试、测试排序和并行测试等高级功能,帮助您更高效地组织和执行 Selenium 测试。

在 appium 移动应用程序测试中使用 TestNG 的一些好处:

  • 将测试用例分组为逻辑单元,使管理和维护测试套件变得更容易。
  • 并行运行测试,显着减少执行测试套件所需的时间。
  • TestNG 提供了多种可用于自定义测试的注解,例如 Test、@BeforeSuite、@AfterSuite、@BeforeTest、@AfterTest、@BeforeMethod 和 @AfterMethod。
  • 它支持数据驱动测试,允许您使用多个测试数据集运行相同的测试用例。
  • 比其他测试框架更好的报告和日志记录功能使您可以更轻松地识别和调试测试中的问题。
  • 要在项目配置文件 pom.xml 中包含 TestNG 依赖项,您需要在节点部分添加以下代码段

Appium With Java: A Comprehensive Guide

通过编写appium.从cmd启动appium
服务器 启动模拟器appium检查器,如我们之前的博客中所述。
在 IntelliJ 中,打开文件夹 src/main/java 并在其中创建一个新的 java 类文件,然后按如下方式编写我们的第一个测试。

让我们了解我们的第一个测试用例

  • 期望的功能:这是我们之前的appium博客中解释的一个概念。它是一种键值组合信息,它告诉Appium我们的设备,使用什么样的设备(Android),如何使用控制应用程序 (UiAutomator2),以及在哪里可以找到该应用程序。这些功能对于在测试自动化期间建立与仿真器或物理设备的连接至关重要。
  • 连接并启动:我们连接到 Appium 服务器并使用它在设备上打开应用程序。我们还设置了较短的等待时间,以防应用程序需要一些时间来加载。
  • 扮演用户: 代码通过在屏幕上查找按钮、文本字段和其他元素来充当用户。然后,它像真人一样输入文本、单击按钮并滚动列表。
  • 检查工作:最后,代码确保一切按计划进行。它获取了列表中第一个产品的标题,并将其与我们期望的产品进行比较(例如“Air Jordan 4 Retro”)。如果它们不匹配,则意味着出现问题,测试失败。
  • 下面是我们使用 Java 进行 appium 移动应用测试编写上述测试脚本的应用程序页面的屏幕截图。

Appium With Java: A Comprehensive Guide

  • 执行appium测试脚本:代码编写完成后,您可以通过右键单击测试并单击“运行”来执行/运行它。它将在连接的设备或模拟器上启动移动应用程序,并执行测试脚本中指定的操作。执行完成后可以在控制台看到执行日志如下图

Appium With Java: A Comprehensive Guide

结论

Appium 和 Java 共同创建了一个强大的解决方案,用于自动化移动应用程序测试,在整个开发过程中节省时间和资源。这使您能够交付高质量的应用程序。本指南帮助您通过设置环境和编写第一个测试来开始您的旅程。但这只是开始!随着您进一步探索,Appium 可以与其他工具集成并测试不同的应用程序类型,从而使您能够构建强大的测试流程。通过采用 Appium 和 Java,您可以自动执行重复性任务、尽早发现错误并充满信心地交付卓越的移动应用程序。所以今天就开始你的 Appium 和 Java 测试冒险吧!

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

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

如果您想了解更多关于我们提供的优质服务,请务必联系我们。

测试愉快! ?

版本声明 本文转载于:https://dev.to/jignect_technologies/appium-with-java-a-comprehensive-guide-4284?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python import codecs import codecs import codecs 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有...
    编程 发布于2025-05-01
  • 切换到MySQLi后CodeIgniter连接MySQL数据库失败原因
    切换到MySQLi后CodeIgniter连接MySQL数据库失败原因
    Unable to Connect to MySQL Database: Troubleshooting Error MessageWhen attempting to switch from the MySQL driver to the MySQLi driver in CodeIgniter,...
    编程 发布于2025-05-01
  • JDBC中关闭连接是否足够?是否需显式关闭结果集和语句?
    JDBC中关闭连接是否足够?是否需显式关闭结果集和语句?
    jdbc资源封闭练习需要:在JDBC编程的领域中,需要显式结果集和语句关闭显式关闭的基本原理,在关闭连接时似乎是全面的,那么它可能无法完全关闭所有相关的资源。原因源于JDBC体系结构中的资源所有权。在您提供的代码中,try-catch-Finally Block仔细关闭结果集,语句和连接。这种方...
    编程 发布于2025-05-01
  • 大批
    大批
    [2 数组是对象,因此它们在JS中也具有方法。 切片(开始):在新数组中提取部分数组,而无需突变原始数组。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    编程 发布于2025-05-01
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-05-01
  • 如何使用PHP将斑点(图像)正确插入MySQL?
    如何使用PHP将斑点(图像)正确插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call ...
    编程 发布于2025-05-01
  • `console.log`显示修改后对象值异常的原因
    `console.log`显示修改后对象值异常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    编程 发布于2025-05-01
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    在java 中有效地替换多个substring,需要在需要替换一个字符串中的多个substring的情况下,很容易求助于重复应用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    编程 发布于2025-05-01
  • 为什么HTML无法打印页码及解决方案
    为什么HTML无法打印页码及解决方案
    无法在html页面上打印页码? @page规则在@Media内部和外部都无济于事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: bo...
    编程 发布于2025-05-01
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的python功能eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。 This article delves into the differences betwee...
    编程 发布于2025-05-01
  • 如何创建DPI感知Windows窗体应用以避免缩放问题
    如何创建DPI感知Windows窗体应用以避免缩放问题
    [2 许多Windows表单应用程序会在Monitor的DPI设置更改时会出现问题。 控件可能会错过或缩放错误。 创建DPI Aware应用程序对于避免这些问题至关重要。 autoscalemode = autoscalemode.dpi 是一个起点,这不是一个完整的解决方案。 对于强大的D...
    编程 发布于2025-05-01
  • Java中文件扩展名提取技巧
    Java中文件扩展名提取技巧
    如何轻松地在Java中提取文件扩展名 example usage condusion [&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& filenameutils.getExtension io中提供了一个轻松...
    编程 发布于2025-05-01
  • Python操作MySQL获取最新插入ID方法
    Python操作MySQL获取最新插入ID方法
    Retrieving Last Inserted ID after INSERT into MySQL Database with PythonWhen performing INSERT operations into a MySQL database using Python, obtainin...
    编程 发布于2025-05-01
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,将常数列添加到Spark DataFrame,该列具有适用于所有行的任意值的Spark DataFrame,可以通过多种方式实现。使用文字值(SPARK 1.3)在尝试提供直接值时,用于此问题时,旨在为此目的的column方法可能会导致错误。 df.withco...
    编程 发布于2025-05-01
  • 编译器报错“usr/bin/ld: cannot find -l”解决方法
    编译器报错“usr/bin/ld: cannot find -l”解决方法
    错误:“ usr/bin/ld:找不到-l “ 此错误表明链接器在链接您的可执行文件时无法找到指定的库。为了解决此问题,我们将深入研究如何指定库路径并将链接引导到正确位置的详细信息。添加库搜索路径的一个可能的原因是,此错误是您的makefile中缺少库搜索路径。要解决它,您可以在链接器命令中添加...
    编程 发布于2025-05-01

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3