[英]Running Laravel Dusk on Headless (no GUI) machine
隨着最近Laravel 5.4的發布,我想我會試一試。 就像Reddit上的Ozymandias-X一樣,我也對它感到沮喪。
如果我打開機器並運行php artisan dusk
,我會得到以下信息:
[08:14 AM]-[root@php7]-[/var/www/html/admin]-[git master]
# php artisan dusk
PHPUnit 5.7.11 by Sebastian Bergmann and contributors.
E 1 / 1 (100%)
Time: 25.91 seconds, Memory: 10.00MB
There was 1 error:
1) Tests\Browser\LoginTest::it_should_see_email_error_message
Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"desiredCapabilities":{"browserName":"chrome","platform":"ANY","chromeOptions":{"binary":"\/usr\/lib64\/chromium-browser\/chromedriver","args":["no-first-run"]}}}
Operation timed out after 5001 milliseconds with 0 out of -1 bytes received
/var/www/html/admin/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php:287
/var/www/html/admin/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:121
/var/www/html/admin/tests/DuskTestCase.php:42
/var/www/html/admin/vendor/laravel/dusk/src/TestCase.php:180
/var/www/html/admin/vendor/laravel/framework/src/Illuminate/Support/helpers.php:639
/var/www/html/admin/vendor/laravel/dusk/src/TestCase.php:181
/var/www/html/admin/vendor/laravel/dusk/src/TestCase.php:111
/var/www/html/admin/vendor/laravel/dusk/src/TestCase.php:85
/var/www/html/admin/tests/Browser/LoginTest.php:24
ERRORS!
Tests: 1, Assertions: 1, Errors: 1.
我試圖跟隨邁克史密斯的文章 ,但手動執行./vendor/laravel/dusk/bin/chromedriver-linux
並注釋掉static::startChromeDriver();
來自DuskTestCase根本沒有幫助。 我也試過安裝Xvfb並在port:0上手動運行它,同樣的事情發生了。 最后,我嘗試從/usr/lib64/chromium-browser/chromedriver
(2.25)手動運行驅動程序,完全沒有變化。
我試圖避免直接從Windows運行這個,因為我打算用無頭/無gui linux進行CI過程,我將不得不設置我正在嘗試的同樣的事情。
注意:這不是公認的答案,因為真正的問題在於Cent OS。 這個答案只是一個建議,而我們沒有RedHat的解決方案。
問題出在Cent OS上。 通過我在Ubuntu發行版上所做的一切,它很容易。 這個基於這個要點的 后期媒介足以讓任何人前進。 如果鏈接斷開,我將在這里強調一些要點。
依賴
# makes sure all your repos are up to date
sudo apt-get update
# chrome dependencies I think
sudo apt-get -y install libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4
# chromium is what I had success with on Codeship, so seemed a good option
sudo apt-get install chromium-browser
# XVFB for headless applications
sudo apt-get -y install xvfb gtk2-engines-pixbuf
# fonts for the browser
sudo apt-get -y install xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable
# support for screenshot capturing
sudo apt-get -y install imagemagick x11-apps
運行Xvfb
Xvfb -ac :0 -screen 0 1280x1024x16 &
完成
解決方案是在no-sandbox
情況下運行chrome 或者根本不以root身份運行它 。 我創建了一個名為dusk的用戶,在Dusk下工作沒有任何問題。
login as: dusk
dusk@192.168.56.70's password:
Last login: Mon Mar 6 13:07:30 2017 from 192.168.56.1
[dusk@php7 ~]$ Xvfb -ac :0 -screen 0 1280x1024x16 &
[1] 2177
[dusk@php7 ~]$ cd /var/www/solucoesideais/laravel-dusk/
[dusk@php7 laravel-dusk]$ php artisan serve --host=127.0.0.1 --port=8000 --env=dusk.environment &
[2] 2186
[dusk@php7 laravel-dusk]$ Laravel development server started: <http://127.0.0.1:8000>
[dusk@php7 laravel-dusk]$ php artisan dusk
PHPUnit 5.7.15 by Sebastian Bergmann and contributors.
[Mon Mar 6 13:23:28 2017] 127.0.0.1:59146 [200]: /favicon.ico
. 1 / 1 (100%)
Time: 3.7 seconds, Memory: 10.00MB
OK (1 test, 1 assertion)
[dusk@php7 laravel-dusk]$
對於那些在無頭模式下遇到黃昏問題的人來說,試一試:
在DuskTestCase
使用以下驅動程序函數:
/**
* Create the RemoteWebDriver instance.
*
* @return \Facebook\WebDriver\Remote\RemoteWebDriver
*/
protected function driver()
{
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
'--headless',
'--no-sandbox',
]);
return RemoteWebDriver::create(
'http://localhost:9515', DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
)->setCapability('acceptInsecureCerts', TRUE)
);
}
對我有把戲:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.