PHP Selenium Webdriver (Facebook wrapper)で特定のelementまでscrollする

よくない処理

$this->driver->executeScript("window.scrollTo(400, 1000);");
$element = $this->driver->findElement(WebDriverBy::className('button'));
$element->click();

 上のコードのように、いつも一定量スクロールしてクリックするような処理を記述しているとエレメントのレイアウトを変更した時などに対応できません。  特にデスクトップ環境とモバイル環境両方で自動テストを実行したい時などはエレメントのレイアウトが大きく変わってしまうので注意が必要です。

改善後

 こういう状況では特定の要素までスクロールする処理にしましょう。

use Facebook\Webdriver\WebDriverPoint; //クラス追加


/*     処理部分     */
$element = $this->driver->findElement(WebDriverBy::className('button'));
$element->getLocationOnScreenOnceScrolledIntoView(); // ボタンが表示されるまでスクロール
$element->click();

AWS構築サービスの全てをまとめた資料を公開中

ハックノート(TOWN株式会社)では、AWSの導入や構築支援を行っています。AWS導入メニューやサービス詳細、構成例や費用を掲載した資料をダウンロードできます。

AWSの新規導入やAWSへの移行を検討の際は、ぜひご参考ください。


APNコンサルティングパートナー

TOWN株式会社はAmazon公認コンサルティングパートナーです。