Unsplashこんにちは!個人開発をしている南です!今回はPythonとSeleniumを使って、自作のWordPressテーマ「GuildPress」の自動テストでゆっくりとスクロール処理を入れることがあったので、その方法をシェア致します。Unsplashそもそも、スクロールを入れたかった理由については下記の通りです。ページに鍵をかける処理をしていたけど、ちゃんと鍵が掛かっているかどうかを確認したかったから。slowly」とかで検索をかけてググって、次のような記事を発見しました。Seleniumただ、ページの指定の場所に一瞬で移動する方法はすぐに見つかるのですが、なかなかゆっくりとスクロールしてくれる処理は見つかりませんでした。ちなみに、一瞬で移動するコードは下記のコードで実装できます。#driverはwebdriver.Chrome()などのドライバーです。移動したい数字を記入);")12#driverはwebdriver.Chrome()などのドライバーです。移動したい数字を記入);")原理的には、ブラウザ上でJavaScriptを実行して、移動するというものです。Unsplash一瞬で移動する方法はあるのですが、ゆっくりスクロールする方法が見つからない中色々考えていました。そこで、ブラウザの高さを取得して、for文を使って下記のコードの「移動したい数字を記入」の部分の数字を動的に変更すれば良いということに気づきました。#driverはwebdriver.Chrome()などのドライバーです。移動したい数字を記入);")12#driverはwebdriver.Chrome()などのドライバーです。移動したい数字を記入);")そこで、実際に使ったコードが下記。#最後までスクロールすると長いので、半分の長さに割る。document.body.scrollHeight")#最後までスクロールすると長いので、半分の長さに割る。Unsplashコードの流れとしては、次のような流れになっています。・ループ処理で少しづつ移動するようにする。ページの高さを取得まずは、ページの全体の高さを取得してループ処理にかけるMaxの値を作成していきます。ページ全体の高さを取得するには、JavaScriptを使って取得します。該当箇所は下記のコード。document.body.scrollHeight")スクロールする長さの調節ページの最後までスクロールすると長いので、長さを半分に割ります。該当箇所は下記のコード。#最後までスクロールすると長いので、半分の長さに割る。212#最後までスクロールすると長いので、半分の長さに割る。2ループ処理で少しづつ移動するようにする。最後に、取得した高さをPythonのfor文のrange部分にセットしてループを回します。あとは、execute_scriptを使ってJavaScriptのスクロール処理を実行していくことでゆっくりとスクロールするということを実装することができます。該当箇所は下記のコード。"+str(x)+");")スクロールしている時のスピードに関しては、xの値を何かすればおそらく早くできるかもです。まとめ今回はPythonとSeleniumを使って、ゆっくりとブラウザ上をスクロールする処理の実装方法を紹介しました。この記事が僕と同じように、実装方法に悩んでいるあなたの役に立てれば嬉しいです。健太郎1991年生まれ。都内でエンジニアをしています。このブログでは、個人開発や日々の技術に関する情報などを発信していきます。今回は、babel-loaderについて紹介していきます。健太郎2019年3月26日seleniumこの投稿へのコメントコメントはありません。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。この投稿へのトラックバックコメントはありません。