雑文発散

«前の日記(2012-03-10) 最新 次の日記(2012-03-17)» 編集
過去の日記

2012-03-14 [長年日記]

[PHP] PHPUnit_Selenium 1.2.4 では複数のブラウザでのテスト実行ができないが、HEAD では直っている

ここ数日 PHPUnit + Selenium を実践的に学んでいた。

基礎的な動作は把握できたので、複数のブラウザで回すための仕込みをしようとして、マニュアルの「第17章 PHPUnit と Selenium」の「例 17.4: 複数のブラウザの設定管理」を参考にテストケースを実装してもうまく動かなかった。

まぁ、いきなり自分のテストケースに組み込んじゃったのが失敗で、まずは基本の例から実行してみようと思って、前述の「例 17.4: 複数のブラウザの設定管理」をほぼそのままのテストケースを実行しても動かない。

マニュアル通りなら、$browsers に設定した Selenium Server に対して、それぞれ接続しにいくはず。例えば下記の例だと my.linux.box:4444 と my.macosx.box:4444 と my.windowsxp.box:4444 と my.windows.box:4444 の4つの Selenium Server へアクセスしてくれるはず。

<?php
 require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
 
 class WebTest extends PHPUnit_Extensions_SeleniumTestCase
 {
 
    public static $browsers = array(
      array(
        'name'    => 'Firefox on Linux',
        'browser' => '*firefox',
        'host'    => 'my.linux.box',
        'port'    => 4444,
        'timeout' => 30000,
      ),
      array(
        'name'    => 'Safari on MacOS X',
        'browser' => '*safari',
        'host'    => 'my.macosx.box',
        'port'    => 4444,
        'timeout' => 30000,
      ),
      array(
        'name'    => 'Safari on Windows XP',
        'browser' => '*custom C:\Program Files\Safari\Safari.exe -url',
        'host'    => 'my.windowsxp.box',
        'port'    => 4444,
        'timeout' => 30000,
      ),
      array(
        'name'    => 'Internet Explorer on Windows XP',
        'browser' => '*iexplore',
        'host'    => 'my.windowsxp.box',
        'port'    => 4444,
        'timeout' => 30000,
      )
    );

ところが、PHPUnit_Selenium 1.2.4 では、どの設定も localhost:4444 へ接続しにいってしまい、リモートの Selenium Server へ接続しにいかない。

なんかおかしいなと思って、いろいろ調べていくうちに、PHPUnit_Selenium 内の SeleniumTestCase.php に不具合があるところを突き止めて、なんとか修正コードを作るところまで至った。

では、本家に修正コード投げて見ちゃう!?と思って、phpunit-selenium を fork した。

pull request を投げる前に、テストコードも書かなきゃなと思って、phpunit-selenium のテストを実行できる環境を用意。テストコードも書いてみて、まずはそのまま実行して失敗するところの確認をしたら、、、失敗しない。なぜか正常に動く。

テスココードの書き方がおかしいのか!?といろいろやっていたのだけど、結局、master ブランチの HEAD にある SeleniumTestCase.php には修正が入っていて、正しく動く状態になっていた。

世の中にいるかどうか分らないけど、PHPUnit_Selenium 1.2.4 を使っていて、複数ブラウザでの実行がうまくいかないって悩んでいる人は、GitHub から最新版の SeleniumTestCase.php を落としてきて差し替えると良いよ。

ということで、散々悩んだりしていたんだけど、そのお陰でだいぶ PHPUnit + Selenium 関係を頭の中で整理できた。今までマニュアルを一部しか読んでなくて、あやふやな部分が多かったんだけど、この機会に全部読みなおして、スッキリした。

ついでにドキュメントを読んでいて見つけた typo の修正を pull request したりして、ほんのちょびっとだけど、プロジェクトへの貢献ができたことで更に自己満足(笑)

本日のツッコミ(全4件) [ツッコミを入れる]
RichardFruig (2026-07-15 08:10)

Запоя лечение в клинике Сочи: вывод из запоя на дому и в стационаре, помощь нарколога, капельница, детоксикация, кодирование алкоголизма анонимно <br>Изучить вопрос глубже - http://vyvod-iz-zapoya-sochi20.ru

mostbet_gtpi (2026-07-24 03:32)

Салам, Кыргызстан То выплаты задерживают Нервов потратил — мама не горюй Короче, работает стабильно и честно — mostbet официальный сайт Вывод денег за 5 минут В общем, там все подробности — мостбет кг [url=https://mostbet-ryo.com.kg]мостбет кг[/url] Только mostbet реально рулит Перешлите тому кто тоже ищет нормальную контору

zakazat kyhnu_lisn (2026-08-16 04:58)

Я лично перерыл кучу предложений, а вдруг до меня дошло, что лучше держать перед глазами базу. И именно подвернулась ссылка, реально понятная структура. кухни на заказ каталог СПб [url=https://zakazat-kuhnyu-nvd.ru]кухни на заказ каталог СПб[/url] Скажу без преувеличения — и описание без воды. Добавил в избранное, чтобы потом вернуться. И в итоге сэкономило кучу времени. Потому что когда есть с чем сверить, выбрать проще. Кстати, вот этот материал — надеюсь, поможет. И про фурнитуру — комплексный подход. Не берите первый попавшийся вариант, посвятите этому вечер. Надеюсь, найдете свой вариант!

movers in nevada_clei (2026-08-22 05:01)

So you've got a move coming up — I've been there not so very long ago, and I won't lie, a real undertaking. Think it'll be quick, then bam — the mountain appears. A coworker praised one outfit, but I needed solid info. Anyway: when you're searching for a trustworthy company around here, take it slow. Why?: experienced teams handle the elements better — especially if you've got heavy stuff. My approach — spent a good chunk of time on reviews — and believe me, I dodged some real traps. So take a look at this that put the pieces together. movers in nevada [url=https://movers-in-nevada-rfj.com]movers in nevada[/url] That single source saved me countless hours. Everything is out in the open — totally upfront. Booked my move through that site and flawless from start to finish. So be thorough. Confirm the dates. Quality service is invaluable. Best of luck with your move!