tajawal / codeception-appium
Codeception 框架的 Appium 驱动程序
Requires
- php: >=7.0
- codeception/codeception: ~2
- phpunit/phpunit-selenium: ~4
- squizlabs/php_codesniffer: *
- symfony/console: ~4
Requires (Dev)
- overtrue/phplint: ~1
- phpunit/phpunit: ~6
This package is not auto-updated.
Last update: 2024-09-29 02:55:41 UTC
README
Codeception 的 Appium 驱动程序
用于编写移动测试的 Codeception Appium 驱动程序
要求
- PHP >= 7.0
- Appium
- 使用 Appium Desktop 检查应用
- 设备
- Android
- iOS
- 从以下链接安装 Xcode 或在终端运行以下命令
xcode-select --install
- 安装 Carthage 依赖管理器
brew install carthage
- 从以下链接安装 Xcode 或在终端运行以下命令
目录
安装
只需将 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 许可协议 下获得。