modelizer/selenium

laravel 5 的 Selenium 包。

v2.0.2 2019-08-19 12:23 UTC

README

Laravel 5.x Testing for Selenium made easy.

Code Climate StyleCI Latest Stable Version Total Downloads License

重点

  1. 您只需要下载此包,无需下载任何其他内容。
  2. 默认情况下,此包将下载 selenium 独立服务器 v3.11.0,并且根据操作系统下载 chrome 驱动程序。
  3. 基于 Fluit API 的 浏览器测试套件
  4. 具有最小配置选项,许多内容都从 Laravel 默认配置中拉取。

要求

  1. 本地机器上应已安装 Java。
  2. 您应该至少对 PHPUnit 有基本了解。

安装指南

使用 Laravel 包管理器 进行安装,然后您可以通过运行以下命令 安装它,并且管理器将负责注册 selenium 服务提供者。

php artisan add modelizer/selenium

或者您也可以使用 composer。

composer require modelizer/selenium "~2.0"

app.php 中注册服务提供者

Modelizer\Selenium\SeleniumServiceProvider::class

使用环境变量进行操作:您需要在根目录下创建单独的文件 testing.env 以加载测试特定变量。示例

APP_URL=http://testing.dev:8000

别忘了清除 Laravel 配置缓存文件。

php artisan config:clear

我们完成了!现在启动 selenium 服务器。

php artisan selenium:start

创建第一个测试

通过 Artisan 命令

php artisan selenium:make:test SeleniumExampleTest

手动

  1. tests 目录中创建一个空的 SeleniumExampleTest.php 文件。
  2. 将以下代码添加到 SeleniumExampleTest.php 文件中,并运行 phpunit vendor/bin/phpunit tests/SeleniumExampleTest.php
<?php

namespace Tests;

use Modelizer\Selenium\SeleniumTestCase;

class SeleniumExampleTest extends SeleniumTestCase
{
    /**
     * A basic functional test example.
     *
     * @return void
     */
    public function testBasicExample()
    {
        // This is a sample code you can change as per your current scenario
        $this->visit('/')
             ->see('Laravel')
             ->hold(3);
    }

    /**
     * A basic submission test example.
     *
     * @return void
     */
    public function testLoginFormExample()
    {
        $loginInput = [
            'username' => 'dummy-name',
            'password' => 'dummy-password'
        ];

        // Login form test case scenario
        $this->visit('/login')
             ->submitForm('#login-form', $loginInput)
             ->see('Welcome');  // Expected Result
    }
}

运行测试用例

vendor/bin/steward run staging chrome

此包是在 Steward 的基础上构建的,用于运行具有特定参数的测试用例,您可以查看 Steward 的 Wiki

有关完整文档,您可以查看我们的 API Wiki。它内部继承自 facebook Web Driver,因此您可以充分利用这些依赖项包的全部功能。

注意

  1. 使用了 Selenium 3.11.0 和 ChromeDriver 2.35。
  2. 欢迎贡献或创建问题。
  3. 对于 Laravel 5.3 以下版本的用户,无法在 PHPUnit 和 Selenium 之间切换。
  4. 我们将变更日志作为 发布板Wiki
  5. 如果使用虚拟机(例如 VirtualBox、Vagrant、Homestead),则需要 framebuffer。
# install xvfb if needed:
sudo apt-get install xvfb

# run Xvfb
sudo nohup Xvfb :10 -ac

# Set DISPLAY environment variable
export DISPLAY=:10

路线图

  1. 增加了 Firefox 支持。(注意:只有当用户已本地安装 Firefox 时才有效)
  2. 需要添加 Windows 和 Linux 支持。
  3. 驱动文件应按用户特定的操作系统下载。
  4. 添加更多对 API 的支持。
  5. 添加对多个浏览器的支持。
  6. 如果可能,添加 Behat 集成(研究)
  7. 支持第三方服务,如 saucelab。

总结

许多API,如seewaitsubmitForm等,已经在Laravel 5.3中实现。这个包的整体目标是使用户能够随时轻松切换测试类型。例如:如果用户想要使用Selenium进行测试,那么他只需在他的测试用例中扩展Modelizer\Selenium\SeleniumTestCase;如果他想进行PHPUnit测试,那么他可以通过扩展Laravel 5.3默认提供的TestCase来实现。这将使用户能够在不更改API的情况下,使用多种不同的测试类型进行测试。

贡献

  1. 如果您喜欢这个包,可以给它一个星标。
  2. 帮助保持readme更新,添加一些这个包中存在但其他人看不到的功能。
  3. 请随意创建PR(Pull Request)、Issue或建议,以帮助这个包成长。只需这样做。欢迎您:)

致谢