引言
Dusk
是Laravel
生态下配套的,浏览器端到端测试套件,自带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
所使用的ChromeDriver
跟Chrome
版本不对应:
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
文件可执行
注意Linux
下Dusk
调用的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