2017-10-21 8 views
12

私はLaravel Duskをテストスキームに1週間統合しようとしており、実際に期待される結果を出すためのテストはできません。ここでは状況があります:UbuntuでLaravel Duskを正しく実行する16 wt Laravel 5.5

  • 私は、PHP 7.1で(プロジェクトごとにインストール)ホームステッドでLaravel 55を実行している*
  • 私はドキュメントのインストール手順以下の夕暮れを設置しました。

ボックスのうちのテストが

  • 動作しませんでした私はthis article on "Laravel Dusk on Homestead"で見つかったステップを追加し、要点は私のプロビジョニングファイルへhere in "setup-headless-selenium-xvfb.sh"これを見つけました。これにより、私が得ていた多くの例外が削除されました。

  • は、私はまた、すべての私の既存の環境は、彼らは私がテストを実行したときにすでに正常しかし今phpunit.xml

からPHPUnitテストを実行するにして行われたとおりに、私のphpunit.dusk.xmlファイルのPHPのノードにvarsの追加しました私は期待される出力を得ることができません。これは私がやっていることです。私のような私のホームページ(「/」)ビューファイルに入力フィールドを追加します。

<?php 

namespace Tests\Browser; 

use Tests\DuskTestCase; 
use Laravel\Dusk\Browser; 

class ExampleTest extends DuskTestCase 
{ 
    public function testBasicExample() 
    { 
     $this->browse(function (Browser $browser) 
     { 
      $browser->visit('/')->refresh() 
       ->assertValue('#dusk-test', '1234') 
      ; 
     }); 
    } 
} 

<input id="dusk-test" value="1234">

は、私は、元のサンプルテストのMODであり、唯一のテストであるこのテストを実行します... php artisan duskを実行することによって、これは、これはさらに混乱、私はテストからダンプするとき、これは私の出力であることを確認するために、すべての時間

PHPUnit 6.4.3 by Sebastian Bergmann and contributors. 

E                 1 
/1 (100%) 

Time: 1.07 seconds, Memory: 12.00MB 

There was 1 error: 

1) Tests\Browser\ExampleTest::testBasicExample 
Facebook\WebDriver\Exception\NoSuchElementException: no such element: 
Unable to locate element: {"method":"id","selector":"dusk-test"} 
    (Session info: headless chrome=62.0.3202.62) 
    (Driver info: chromedriver=2.32.498513 (2c63aa53b2c658de596ed550eb5267ec5967b351),platform=Linux 4.4.0-92-generic x86_64) 


    /home/vagrant/landing/vendor/facebook/webdriver/lib/Exception/WebDriverException.php:102 /home/vagrant/landing/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php:320 
    /home/vagrant/landing/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:535 
    /home/vagrant/landing/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:175 
    /home/vagrant/landing/vendor/laravel/dusk/src/ElementResolver.php:281 
    /home/vagrant/landing/vendor/laravel/dusk/src/ElementResolver.php:327 
    /home/vagrant/landing/vendor/laravel/dusk/src/Concerns/MakesAssertions.php:632 
    /home/vagrant/landing/tests/Browser/ExampleTest.php:22 
    /home/vagrant/landing/vendor/laravel/dusk/src/TestCase.php:92 
    /home/vagrant/landing/tests/Browser/ExampleTest.php:24 

    ERRORS! 
    Tests: 1, Assertions: 0, Errors: 1. 

私の出力です。ここでは、私が

<?php 

namespace Tests\Browser; 

use Tests\DuskTestCase; 
use Laravel\Dusk\Browser; 

class ExampleTest extends DuskTestCase 
{ 
    /** 
    * A basic browser test example. 
    * 
    * @return void 
    */ 
    public function testBasicExample() 
    { 
     $this->browse(function (Browser $browser) 
     { 
      $browser->visit('/') 
       ->dump() 
      ; 
     }); 
    } 
} 

をダンプし、php artisan duskを実行した後、私の出力は再び絶対に私のホームページではありません

PHPUnit 6.4.3 by Sebastian Bergmann and contributors. 

"<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>" 

ある方法です。私はvendor/laravel/dusk/src/Browser.phpから$urlの値を投げ捨てて、私のプロジェクトが正しくAPP_URLになった。

私は迷っています。正しい場所に夕暮れが送られており、そのページには必ず入力と値があります。しかし、私は12345が要素から取り出されたことになると予想される出力をDuskに与えることができません。

すべてのお役に立ちました。

+0

私は全く同じ問題があります。私はchromedriverのデバッグを通して、クロムが正しいエンドポイントに送られ、正しいデータを返すことさえ確認できます。 –

+1

HTTPSサイトですか? (BTW:もうSeleniumとXvfbは必要ありません) –

+0

これはhttpsサイトではありません。私は現在Seleniumを使用していませんが、まだXvfbセッションを開始しています。それはもはや必要ではないですか? 私が前に述べたように、夕暮れからウェブ・ドライバーへのクロムのナビゲートとレンダリングのページはすべて動作しています。 Webdriverとduskの間でページの内容が失われます。 –

答えて

3

は多分私が言っていることは間違っている...しかし、Laravelの夕暮れはdusk代わりのidを必要としているようだ:dusk="dusk-test"のように。後にそれを呼び出す: $browser->visit('/')>refresh() ->assertValue('@dusk-test', '1234')とそれは医者のようにする必要があります。 Github誰かに

+1

これは試しましたか? – jeteon

+0

本当に、私は正義を示唆していません。しかし、あなたはこれを見て:要素を見つけられません:{"メソッド": "id"、 "セレクター": "dusk-test"}そして、ドキュメントを読むと、ここからエラーが来ているようです。 – JeremyGi

+0

私がスクリーンショットを見ると、それは完全に空白です。応答をダンプすると、です。要素が見つかりません。 –

0

.envファイルにhttp://https://を置き換えることによって、彼の問題を解決しました。

関連する問題