2

引言

DuskLaravel生态下配套的,浏览器端到端测试套件,自带PageObject设计模式,对测试代码的编写比较友好,对比原生Selenium更容易上手,几乎可做到开箱即用。

以下简述安装及使用过程中,可能会遇到的小细节及注意点,帮助大家入门上手:

安装Chrome

Linux下要自己下安装包,此处以Ubuntu为例。
这个链接下载的是最新的稳定版:

cd /tmp
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

安装deb软件包:

sudo dpkg -i google-chrome-stable_current_amd64.deb

若提示安装失败,缺少依赖,则:

sudo apt --fix-broken install

然后重新:

sudo dpkg -i google-chrome-stable_current_amd64.deb

装完后看看版本,因为ChromeDriver的版本要跟其对应:

google-chrome --version

另一个选择是直接安装开源的Chromium,但为了完整模拟用户端的使用情况,建议使用完整的Chrome

安装Dusk

通过Composer添加依赖:

composer require --dev laravel/dusk

Laravel项目安装Dusk

php artisan dusk:install

运行Dusk并解决ChromeDriver问题

老规矩,先运行一下,然后根据报错或提示去解决问题:

php artisan dusk

下载ChromeDriver文件

若有类似提示Dusk所使用的ChromeDriverChrome版本不对应:

Facebook\WebDriver\Exception\SessionNotCreatedException: session not created: Chrome version must be between 70 and 73
  (Driver info: chromedriver=2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5),platform=Linux 4.15.0-91-generic x86_64)

则需要自己下载好对应版本的ChromeDriver,官方下载地址https://chromedriver.chromium...(很遗憾,需要科学上网)。

下好以后覆盖替换我们Laravel项目下./vendor/laravel/dusk/bin/中的chromedriver-linux文件。

另一种简便方式是使用Dusk自带命令(好处是不需科学上网,但下载会很慢):

# 为你的操作系统安装最新版本的 ChromeDriver...
php artisan dusk:chrome-driver

# 为你的操作系统安装指定版本的 ChromeDriver...
php artisan dusk:chrome-driver 74

# 为所有支持的操作系统安装指定版本的 ChromeDriver...
php artisan dusk:chrome-driver --all

确保ChromeDriver文件可执行

注意LinuxDusk调用的ChromeDriver二进制文件是要可执行权限的。
如果在Dusk运行时遇到问题,可以使用以下命令确保二进制文件是可执行的:

chmod -R 0755 vendor/laravel/dusk/bin

Dusk命令行使用

  • 运行所有测试
php artisan dusk
  • 运行单个测试文件
php artisan dusk ./tests/Browser/Admin/HomePageTest.php
  • 重新运行上次失败的测试
php artisan dusk:fails
  • 创建测试到./tests/Browser/目录下
php artisan dusk:make LoginTest
  • 创建测试到指定路径
php artisan dusk:make ./tests/Browser/Admin/HomePageTest

Dusk相关文档参考

https://learnku.com/docs/lara...


YT老秦
806 声望15 粉丝

Web 折腾狮 / 研究猿 - 终生学习,保持第一梯队。