php-webdriverでのエレメントの存在判定について

php-webdriverを用いた自動化を行う時、 要素をidやclassNameを指定して取得したい時にそもそもエレメントが存在しないことがあります。

その場合期待していない処理担ってしまうので、 指定したエレメントが存在するのかの判定をする必要があります。

WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::name('email'))//name:emailという要素の存在の判定

他にもタイトルやURLがあるかどうかの判定ができます

titleIs()
titleContains()
titleMatches()
urlIs()
urlContains()
urlMatches()
presenceOfElementLocated()
presenceOfAllElementsLocatedBy()
elementTextIs()
elementTextContains()
elementTextMatches()
textToBePresentInElementValue()

これを用いてwait()関数をつかうことで、要素が確認できるまで待つ処理ができます。

//確認できるまでまつ
$driver->wait()->until(
  WebDriverExpectedCondition::titleIs('My Page')
);

//500msごとに確認して最大で10秒待つ
$driver->wait(10, 500)->until(
  WebDriverExpectedCondition::titleIs('My Page')
);