PHP Selenium Webdriver (Facebook wrapper)で要素がクリックできるようになるまでWait

Seleniumでは状態を指定して、その状態になるまで待機するという処理ができます。 「例えばある特定の要素がクリックできるように待つ」であったり、「特定の要素が画面に表示されるまで待つ」だったりがそれに当たるのですが、単純なsleep関数の代わりにこれを使用することで処理能力の低いパソコンや通信環境が安定していない状況ではsleep時間が短すぎてうまくいかないだったり、無駄に待ち時間が長いといった不満を解消できます。

他にも指定できる状態はたくさんあって、それらはここにのっています。 しかしこの説明文だけだと引数に何を与えてやればいいのかわからないので、自分の環境下のseleniumのファイルのうち、WebDriverExpectedCondition.phpを開いてなんの引数を与えてやれば良いか確認してやりましょう。

ちなみに要素がクリックできるまで待つにはexpected conditionにelement to be clickableを選んで引数にwebdriverbyを与えてやります。 コードにするとこんな感じです。

$element = $this->driver->findElement(WebDriverBy::id('element')); //idがelementという要素を指定
$this->driver->wait()->until(
    WebDriverExpectedCondition::elementToBeClickable(WebDriverBy::id('element')) //クリックできるようになるまで待つ
);
$element->click(); //elementをクリック