tajawal/codeception-appium

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>

现在您需要启动 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 许可协议 下获得。