テーマ:プログラムの話(235)
カテゴリ:プログラミング
最近休日の過ごし方で、少しプログラムを触るようにしています。
今まで色々なプログラム言語に携わりました(10言語以上…)、一番経験値として高いのはjavaになるのが現状です。 特に最近気になっていたのがSeleniumがJavaでどこまで活用できるか、興味がてらに色々試しています。 (Pythonならライブラリが豊富なので、今からPythonをちゃんと学ぶのも一つとは思いますが。。。) と言っても、もうプログラミングからは随分離れていて、コンサルティングばかりしていた事もあり、SeleniumがRPAツールとどの程度の差があるのか知りたかった、というのがきっかけでした。 (RPAも「UI Path」や「blueprism」は提案し、色々調べていましたので。) 実はChromeブラウザのプラグインには「Katalon Recorder」という、Excelで言うところのマクロ記録的なプラグインがあり、このツールからjavaやC#、Python、Ruby等に操作内容をソースにエクスポートする機能があります。 利用方法も実に簡単で、「Chromeウェブストア」から「Katalon Recorder」をインストールして、Chromeタブ左下に出来たアイコンをクリックするとプラグインが起動します。 あとは「Record」ボタンをクリックした後にChrome上で操作を行い、「Stop」した後に「Export」するだけです。 あとはRPAツール同様、WEBの描画が追い付かない部分に、ロード後に表示される部品が存在するかチェックするか、 (driver.findElement(By.className("対象部品のクラス名")))簡単に行うのであればスレッドを待つのが簡単です。
今回はテスト的にYahooニュースのコメントで「そう思う(いいね?)」ボタンをクリックするだけの簡単なものを試してみました。 ⇒利用によっては悪用になるので、あくまでもテスト的に参考にして下さい。 実は簡単にWebElementをWebDriverから取得して、findElement()メソッドで探した部品をclick()するだけと思ったのですが、そこに「ひっかけ」がありました。 ⇒そりゃ、簡単に出来たら悪用されますしね。。。 不正行為を防ぐ為と思うのですが、特定のハッシュ値がページロード時に埋め込まれており、単純にSeleniumでWebDriver.get("ページ名")だけだと、上記ハッシュ値がエラー値を埋め込むように制御されているので、該当ボタンをclick()した際のJavaScript制御でエラーとなります。。。 色々試したのですが、なかなかうまくいかず、試行錯誤の結果、ページを描画後にjavascriptでハードリフレッシュする方法でとりあえず落ち着きました。 このあと画面描画まで少し待ち、該当コメントの「topic_id」と「comment_id」が含まれるElementを取得後、更にそこから該当ボタンを探してclick()するという荒業で、何とか制御できました。 いや~、どちらかというとSeleniumの勉強というより、Yahooの偽装チェックをハックしたような感じになってしまいました。。。 なお執筆時点では上記で回避できましたが、今後のYahoo側の対策によっては制御が変わる可能性が高いと思いますので、予めご了承ください。 ここまでお読み頂き、有難うございました! 興味のある方は、以下の文献などで、ちゃんとSeleniumを学ぶ事をお勧めします。 Selenium実践入門 自動化による継続的なブラウザテスト (WEB+DB press plusシリーズ) [ 伊藤望 ] お気に入りの記事を「いいね!」で応援しよう
最終更新日
2020.02.18 16:33:40
コメント(0) | コメントを書く
[プログラミング] カテゴリの最新記事
|
|