0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel/Dusk でブラウザテストする際のちょっとしたTipを2つほど

Posted at

はじめに

Laravel/Duskを使い始めて標準で用意されていないケースが2つほどありました。
その対策を紹介したいと思います。

1.CSSの情報を取得

ElementResolverとWebDriverのメソッドを活用します。

testExample1.php
    public function testExample1()
    {
        $this->browse(function (Browser $browser) {
            $browser->();
            $opacity = $browser->resolver->findOrFail('div.hoge button')->getCSSValue('background'); # buttonタグで指定されているStyleのbackground値を取得している
            $this->assertEquals($background, 'rgb( 128, 128, 128 )'); // 色情報はrgb関数で表記する。#は使えない
        });
    }

参考: Browser(Dusk)のソース、RemoteWebDriverElementのソース

2.target="_blank"を指定したリンク先へ移動

RemoteWebDriverの機能を使います。

testExample2.php
    public function testExample2()
    {
        $this->browse(function (Browser $browser) {
            $browser->click('... a'); // target="_blank"なリンクをクリック
            $current_window = $browser->driver->getWindowHandle(); // 現在開いているウインドウに戻りたい時は予めハンドルを取得
            $target_window = collect($browser->driver->getWindowHandles())->last(); // 開いたタブはウインドウリストの最後と見て取得
            $browser->driver->switchTo()->window($target_window); // 対象のウインドウを移動

            // アサーションは略

            $browser->driver->switchTo()->window($current_window); // 対象のウインドウを最初のものに戻す
        });
    }

参考: Duskのissue, RemoteWebDriverのソース

まとめ

標準に無いとしても諦めなければなんとかなりますね!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?