me-io/appium-driver-codeception

Codeception 框架的 Appium 驱动器


README

Codeception Appium 驱动器

用于编写移动测试的 Codeception Appium 驱动器。

Build Status downloads MIT License Donate

All Contributors PRs Welcome Code of Conduct Watch on GitHub Star on GitHub Tweet

要求

  1. PHP >= 7.0
  2. Appium
  3. 使用 Appium Desktop 检查应用程序
  4. 设备
    • Android
    • iOS
      • 从以下链接安装 Xcode 或在终端中运行以下命令
        xcode-select --install
      • 安装 Carthage 依赖管理器
        brew install carthage

目录

安装

只需将 me-io/appium-driver-codeception 添加到项目的 composer.json 文件中

{
    "require": {
        "me-io/appium-driver-codeception": "~1"
    }
}

然后运行 composer install。这将为 codeception 安装 Appium 驱动器及其所有依赖项。或者运行以下命令

composer require me-io/appium-driver-codeception

测试

现在让我们在项目的根目录中运行以下命令

codecept bootstrap

此命令将为 codeception 创建一个配置文件、测试目录和默认测试套件。

编写 Android 测试

现在,让我们在测试目录中创建一个新的配置文件 android.suite.yml,并在其中放置以下内容。

class_name: AndroidGuy
modules:
  enabled:
    # Enable appium driver
    - \Appium\AppiumDriver 
    -  Asserts
  config:
    # Configuration for appium driver
    \Appium\AppiumDriver:
      host: 0.0.0.0
      port: 4723
      dummyRemote: false
      resetAfterSuite: true
      resetAfterCest: false
      resetAfterTest: false
      resetAfterStep: false
      capabilities:
        platformName: 'Android'
        deviceName: 'Android device'
        automationName: 'Appium'
        appPackage: io.selendroid.testapp
        fullReset: false
        noReset: false
        newCommandTimeout: 7200
        nativeInstrumentsLib: true
        connection_timeout: 500
        request_timeout: 500
        autoAcceptAlerts: true
        appActivity: io.selendroid.testapp.HomeScreenActivity
        skipUnlock: true

注意:只有对于真实设备,deviceName 才应设置为 Android device。对于 Android 模拟器,使用虚拟设备名称。

编写 iOS 测试

现在,让我们在测试目录中创建一个新的配置文件 ios.suite.yml,并在其中放置以下内容。

class_name: IosGuy
modules:
  enabled:
    # Enable appium driver
    - \Appium\AppiumDriver
    -  Asserts
  config:
    # Configuration for appium driver
    \Appium\AppiumDriver:
      host: 0.0.0.0
      port: 4723
      dummyRemote: false
      resetAfterSuite: true
      resetAfterCest: false
      resetAfterTest: false
      resetAfterStep: false
      capabilities:
        # PATH OF YOUR APP (something like  /Users/username/Documents/ios.app)
        app: ''
        # xcideOrgId is Apple developer team identifier string.
        xcodeOrgId: ''
        # xcodeSigningId is a string representing a signing certificate. iPhone Developer by default.
        xcodeSigningId: 'iPhone Developer'
        platformName: 'iOS'
        platformVersion: '11.2'
        deviceName: 'iPhone8'
        # Your device udid
        udid: ''
        useNewWDA: false
        newCommandTimeout: 7200
        automationName: 'XCUITest'
        autoAcceptAlerts: true
        fullReset: false
        noReset: true
        nativeInstrumentsLib: true
        connection_timeout: 500
        request_timeout: 500
        skipUnlock: true
        clearSystemFiles: true
        showIOSLog: true

生成 Actor 类

现在我们需要为在 android.suite.yml/ios.suite.yml 中定义的 AndroidGuy/IosGuy 生成 Actor 类。要在终端中为 AndroidGuy/IosGuy 生成 Actor 类,请运行以下命令

codecept build

您的第一个 Android 测试

要创建第一个 Android 测试,请在新创建的 tests 文件夹中的 android 文件夹内创建一个新目录。创建 android 文件夹后,创建一个名为 FirstAndroidCest.php 的新文件,并在其中放置以下内容

class FirstAndroidCest
{
    public function changeLanguage(AndroidGuy $I)
    {
        $I->implicitWait([
            'ms' => 3500,
        ]);
        $text = $I->byId('id_of_button')->getText();
        $I->assertEquals('Hello, World!', $text);
    }
}

您的第一个 iOS 测试

要创建第一个 iOS 测试,请在新创建的 tests 文件夹中的 ios 文件夹内创建一个新目录。创建 ios 文件夹后,创建一个名为 FirstIosCest.php 的新文件,并在其中放置以下内容

class FirstIosCest
{
    public function lockPhone(Ios $I)
    {
        $I->implicitWait([
            'ms' => 10000,
        ]);
        $I->assertEquals('Hello, World!', 'Hello, World!');
        $I->amGoingTo("lock phone");
        $I->lock([null]);
    }
}

运行测试

通过运行以下命令来运行 Appium 服务器

appium

注意:如果您想更改 IP/端口,请像这样运行 Appium 命令

appium -a <IP Address> -p <Port>

运行 Appium 服务器后,您需要启动 Android 模拟器并安装您要测试的应用程序。如果您不知道如何启动模拟器,可以遵循以下指南 在 Mac OS 上设置 Genymotion Android 模拟器

现在,在终端中运行以下命令以运行测试

# For Android
codecept run android FirstAndroidCest.php --steps

# For iOS
codecept run ios FirstIosCest.php --steps

注意:在遵循此处所述的步骤时,如果您收到 codecept 命令未找到 错误,请尝试像这样运行 codecept 命令 ./vendor/bin/codecept

贡献者

非常感谢所有贡献者

许可

代码可在 MIT 许可证 下获得。