Appium-introduction(入门)

Getting Started //入门

本文档将让您启动并运行一个简单的Appium测试,并向您介绍一些基本的Appium想法。有关Appium概念的更全面的介绍,请查看概念介绍

Installing Appium //安装

Appium可以通过两种方式之一安装:通过NPM或下载Appium Desktop,这是一种基于图形化、基于桌面的方式来启动Appium服务器。

Installation via NPM

如果您想通过npm install运行Appium,使用Appium进行黑客攻击,或者贡献给Appium,您将需要node.js and NPM(使用nvmnbrew install node安装节点.js. 确保没有用sudo安装Node或Appium,否则会遇到问题)。我们推荐最新的稳定版本,不过Appium支持Node10+。
实际安装非常简单:

npm install -g appium
Installation via Desktop App Download

只需从releases page下载Appium桌面的最新版本.

Driver-Specific Setup //驱动程序特定设置

您可能想使用Appium来自动化一些特定的东西,比如iOS或Android应用程序。对特定平台自动化的支持由Appium“驱动程序”提供。有许多这样的驱动程序可以让您访问不同类型的自动化技术,并且每个驱动程序都有自己特定的设置要求。这些要求中的大多数与在特定平台上开发应用程序的要求相同。例如,要使用我们的一个Android驱动程序自动化Android应用程序,您需要在系统上配置Android SDK。
在某个时候,请确保查看要自动化的平台的驱动程序文档,以便正确设置系统:

Verifying the Installationy //验证安装

要验证是否满足Appium的所有依赖项,可以使用appium-doctor。使用npm Install-g appium doctor安装它,然后运行appium doctor命令,提供--ios--android标志来验证是否正确设置了所有依赖项。

Appium Clients

说到底,Appium只是一个HTTP服务器。它坐在那里等待来自客户机的连接,然后客户机指示Appium启动什么类型的会话,以及在会话启动后执行什么类型的自动化行为。这意味着你永远不会只使用Appium本身。您总是需要将它与某种类型的客户机库一起使用(或者,如果您喜欢冒险,可以使用cURL!)。
幸运的是,Appium使用与Selenium相同的协议,称为WebDriver协议。只需使用一个标准的Selenium客户机,就可以用Appium做很多事情。你甚至可能已经在你的系统上安装了其中一个。这就足够开始了,尤其是当您使用Appium在移动平台上测试web浏览器时。
Appium可以做Selenium做不到的事情,就像移动设备可以做web浏览器做不到的事情一样。因此,我们有一组采用多种编程语言的Appium客户端,这些客户端扩展了常规的Selenium旧客户端的附加功能。您可以在Appium clients list看到客户机列表和下载说明的链接。
在继续之前,请确保您已经下载了一个用您最喜欢的语言编写的客户端,并准备就绪。

Starting Appium

现在我们可以启动一个Appium服务器,或者像这样从命令行运行它(假设NPM安装成功):

appium

在这里插入图片描述
或者单击Appium桌面中巨大的Start Server按钮。
Appium现在将向您显示一条小的欢迎消息,显示您正在运行的Appium版本以及它监听的端口(默认值是4723)。这个端口信息是非常重要的,因为您必须指导您的测试客户机确保连接到这个端口上的Appium。如果要更改端口,可以在启动Appium时使用-p标志(请确保查看 server parameters的完整列表)。

Running Your First Test

在本节中,我们将运行一个基本的“HelloWorld”Android测试。我们选择Android是因为它在所有平台上都可用。我们将使用UiAutomator2驱动程序,确保您已经阅读了该文档,并适当地设置了系统。我们还将使用JavaScript作为语言,这样我们就不必处理其他依赖项。
(很可能,您最终希望使用JavaScript以外的其他东西来自动化Android以外的其他东西。在这种情况下,请查看我们的sample code,它具有多种语言和平台的代码示例。)

Prerequisites //先决条件
  • 我们假设您已经配置并运行了一个android8.0仿真器(该示例适用于较低版本,只需相应地修复版本号)
  • 我们假设您已经下载了this test APK,并且可以在本地文件系统上使用
Setting up the Appium Client

对于这个例子,我们将使用Webdriver.io文件作为我们的Appium客户。为此示例创建一个目录,然后运行:

npm init -y

项目初始化后,安装webdriverio

npm install webdriverio
Session Initialization //会话初始化

现在我们可以创建名为index.js,并初始化客户端对象:

// javascript
const wdio = require("webdriverio");

接下来我们需要做的是启动一个Appium会话。我们通过定义一组服务器选项和所需的功能,并调用wdio.remote()和他们在一起。所需的功能只是在会话初始化期间发送到Appium服务器的一组键和值,它们告诉Appium我们想要自动化什么样的事情。任何Appium驱动程序所需的最小功能集应包括:(这里不做详细介绍,请参阅Desired Capabilities参数详解)

  • platformName: the name of the platform to automate
  • platformVersion: the version of the platform to automate
  • deviceName: the kind of device to automate
  • app: the path to the app you want to automate (but use the browserName capability instead in the case of automating a web browser)
  • automationName: the name of the driver you wish to use
    有关所需功能的更多信息以及可在Appium中使用的所有功能的列表,请参阅我们的 Capabilities doc
    下面是我们如何开始在测试文件中构建会话:
// javascript
const opts = {
  path: '/wd/hub',
  port: 4723,
  capabilities: {
    platformName: "Android",
    platformVersion: "8",
    deviceName: "Android Emulator",
    app: "/path/to/the/downloaded/ApiDemos-debug.apk",
    appPackage: "io.appium.android.apis",
    appActivity: ".view.TextFields",
    automationName: "UiAutomator2"
  }
};

async function main () {
  const client = await wdio.remote(opts);

  await client.deleteSession();
}

main();

Running Test Commands

您可以看到,我们已经指定了Appium端口,并构建了所需的功能以满足我们的需求(但不要忘记用系统的实际下载路径替换路径)。我们已经向webdriverio注册了这个事实,现在有了一个client对象,它将表示到Appium服务器的连接。从这里开始,我们可以开始会话,执行一些测试命令,然后结束会话。在本例中,我们只需在文本字段中键入并检查输入的文本是否正确:

// javascript

const field = await client.$("android.widget.EditText");
await field.setValue("Hello World!");
const value = await field.getText();
assert.strictEqual(value, "Hello World!");

这里发生的事情是,在创建会话并启动我们的应用程序之后,我们指示Appium在应用程序层次结构中找到一个元素并将其键入。然后查询同一字段的文本,该文本被断言为我们期望的文本。
将所有这些放在一起,文件应该如下所示:

// javascript

const wdio = require("webdriverio");
const assert = require("assert");

const opts = {
  path: '/wd/hub',
  port: 4723,
  capabilities: {
    platformName: "Android",
    platformVersion: "8",
    deviceName: "Android Emulator",
    app: "/path/to/the/downloaded/ApiDemos-debug.apk",
    appPackage: "io.appium.android.apis",
    appActivity: ".view.TextFields",
    automationName: "UiAutomator2"
  }
};

async function main () {
  const client = await wdio.remote(opts);

  const field = await client.$("android.widget.EditText");
  await field.setValue("Hello World!");
  const value = await field.getText();
  assert.strictEqual(value,"Hello World!");

  await client.deleteSession();
}

main();

你可以试着自己运行这个测试。只需保存并使用node执行即可:

node index.js

如果一切都设置正确,你会看到Appium开始吐出大量日志,最终应用程序会弹出屏幕,并开始表现得好像一个隐形用户正在轻触它!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aniona

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值