seleniumでexpected conditionを使ってwaitするときに、
$this->driver->wait()->until( WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::id('hoge')) );
か
$this->driver->wait()->until( WebDriverExpectedCondition::visibilityOfElementLocated(WebDriverBy::id('hoge')) );
のどちらかで迷う時があると思うのですが、そんな時にどっちを使えばいいのかは、のちにどんな処理をするのかで判断しましょう。
presenceOfElementLocatedは要素がDOMに存在するまでWaitをするので、 たとえDOMにあるからといって画面に表示されているとは限りません(実際はDOMがロードされた後にelementがブラウザ上に表示されるので少し時間がかかります。)。 なのでこのwaitの後に「要素をクリックしたい時」とか「要素が視認可能か確認したい時」などはこの処理は向きません。
ただWaitの後にテキストの内容やタイトルとかをサクッと確認したい時は
$this->driver->wait()->until( WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::id('hoge')) );
Waitの後に要素をクリックしたりスクロールしたりしたい時は
$this->driver->wait()->until( WebDriverExpectedCondition::visibilityOfElementLocated(WebDriverBy::id('hoge')) );
を使うようにしましょう。