承接 walterwhites/appium-module 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

walterwhites/appium-module

Composer 安装命令:

composer require walterwhites/appium-module

包简介

Appium module for codeception

README 文档

README

Appium module for Codeception

Easy Appium integration, iOS and Android Automation.

Appium-codeception-module

Table of Contents

Install

Just add walterwhites/appium-module to your project's composer.json file:

{
    "require": {
       "walterwhites/appium-module": "dev-master"
    }
}

then run composer install

Tests

config for iOS

class_name: IosTester
modules:
  enabled:
    # Enable appium module
    -  \Appium\Appium:
    -  Asserts:
  config:
    # Configuration for appium module
    \Appium\Appium:
      host: 0.0.0.0
      local: true
      port: 4723
      browserName: ''
      desiredCapabilities:
        platformName: iOS
        platformVersion: '13.2'
        deviceName: iPhone 11 Pro
        xcodeOrgId: ''
        xcodeSigningId: iPhone Developer
        noReset: true
        fullReset: false
        clearSystemFiles: true
        automationName: XCUITest
        bundleId: %IOS_BUNDLE_ID%
        #app: %IOS_APP_PATH%
        #bundleId: bundleId-of-your-app
        showIOSLog: false

Generating tester classes

To generate actor class for the AndroidTester/IosTester defined inside android.suite.yml and ios.suite.yml run the following command:

codecept build

usage

Below an example of a classic register method

/**
 * @group register
 * Tests the sign up
 * @param User $params
 */
public function registerByEmail(User $params)
{
    $this->test->clickOnButton('SIGN UP', 400);
    $this->test->clickOnButton('SIGN UP WITH EMAIL', 400);
    $this->test->setText('First name', $params->firstName);
    $this->test->setText('Last name', $params->lastName);
    $this->test->setText('Email address', $params->email);
    $this->test->hideKeyboard();
    sleep(2);
    $this->test->touchPositionedButon(2);
    sleep(2);
    $this->test->touchPositionedButon(3);
    $this->test->clickOnButton('SIGN UP', 300);
}
  • clickOnButton clicks on the button with label 'SIGN UP' then 'SIGN UP WITH EMAIL'
  • setText updates the text field with value 'First name' to $params->firstName
  • hideKeyboard closes the Keyboard (not working on all iOS devices)
  • touchPositionedButon taps on a button or checkbox according his position

AppTestCase

protected $locatorStrategy = ILocatorStrategy::class_chain;
protected $classChainSearch = IClassChainSearch::label;
use Button;
use TextField;

public function setLocatorStrategy($locatorStrategy)
{
    switch ($locatorStrategy) {
        case ILocatorStrategy::class_chain:
            $this->locatorStrategy = ILocatorStrategy::class_chain;
            break;
        case ILocatorStrategy::predicate_string:
            $this->locatorStrategy = ILocatorStrategy::predicate_string;
            break;
        case ILocatorStrategy::accessibility_id:
            $this->locatorStrategy = ILocatorStrategy::accessibility_id;
            break;
    }
}

public function setClassChainSearch($classChainSearch)
{
    switch ($classChainSearch) {
        case IClassChainSearch::label:
            $this->locatorStrategy = IClassChainSearch::label;
            break;
        case IClassChainSearch::name:
            $this->locatorStrategy = IClassChainSearch::name;
            break;
        case IClassChainSearch::value:
            $this->locatorStrategy = IClassChainSearch::value;
            break;
    }
}

ILocatorStrategy interface

default locatorStrategy is class chain, you can override it with the following statement

$this->test->setLocatorStrategy(ILocatorStrategy::accessibility_id);

IClassChainSearch interface

IClassChainSearch is an interface which defines the way to search element in the class chain pattern, for example to search a button

public static $button = "**/XCUIElementTypeButton[%s == '%s']";

default value defined in AppTestCase is label, so each time clickOnButton is called, the previous statement becomes

public static $button = "**/XCUIElementTypeButton['label' == '%s']";

you can override it with the following statement

$this->test->setClassChainSearch(IClassChainSearch::name);

OR

$this->test->setClassChainSearch(IClassChainSearch::value);

full example here

$this->test->clickOnButton('SIGN UP', 400);
$this->test->setLocatorStrategy("name");
$this->test->clickOnButton('button_name', 400);
$this->test->setLocatorStrategy("value");
$this->test->clickOnButton('button_value', 400);
  • the first clickOnButton clicks on button with label 'SIGN UP'
  • the second clickOnButton clicks on button with name 'button_name'
  • the third clickOnButton clicks on button with value 'button_value'

The second parameter of clickOnButton defines the time in ms before to perform the action

walterwhites/appium-module 适用场景与选型建议

walterwhites/appium-module 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 156 次下载、GitHub Stars 达 1, 最近一次更新时间为 2018 年 08 月 01 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 walterwhites/appium-module 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 walterwhites/appium-module 我们能提供哪些服务?
定制开发 / 二次开发

基于 walterwhites/appium-module 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 156
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-08-01