php-webdriver_get_current_url


php-webdriverで現在開いているページのURLを取得する必要が出てきた。


SOY CMSの管理画面では、

記事やラベルの詳細ページを開くとURLの末尾に各々のIDが付与されているため、

URLから指定の記事、もしくはラベルのIDを取得するためにはURLを取得しなければならない。

SOY CMSで標準ページでも任意のブログページのb_blockを使用できるようにした


というわけで、php-webdriverの公式Wikiを調べてみたところ、

WebDriverクラスのメソッドでgetCurrentURLというものがあった。

https://github.com/facebook/php-webdriver


使い方は、

$driver = RemoteWebDriver::create($host, DesiredCapabilities::chrome());
$url = $driver->getCurrentURL();

※RemoteWebDriverクラス等や$hostの定義は事前に行っているものとします。

php-webdriverで指定のフォームに値を入力してみる


このコードで現在開いているページのURLを取得できた。

せっかくなので、URLの末尾からIDを取得するコードも書いておくと


$url = $driver->getCurrentURL();
$id = (int)trim(substr($url, strrpos($url, "/") + 1), "/");

正規表現を使って取得は、メモリを多く使うので、

文字数をカウントして取得する。


getCurrentURLの返り値の詳細を見ていないのでなんともいえないけれども、

?のGETパラメータや#を含むURLの場合は先にこれらの値を除いておく必要がありそうだ。