はじめに
1年ぶりにHeliumを使うことになりました。モジュールは3.0.8のバージョンのままでしたが、GithubのREADME.mdが半年前に更新されていました。
Heliumが世に出た経緯などが書かれており、使用方法も以前より詳しく書かれていました。自分の知識を再整理し、またHeliumの便利さを出来るだけ多くの人に知っていただき使っていただきたいと思いREADME.mdを和訳をしてみました。基本は翻訳ソフトでの和訳になりますが、出来るだけ分かりやすいように意訳したつもりです。
Seleniumで挫折された方も一度Heliumを使ってみてください。きっと使いやすくてHeliumの事が好きになると思います。
なおHeliumの設定などについては以前の記事を参考にしてください。
Heliumが世に出た経緯
Michael Herrmannは2013年にBugFree softwareというポーランドのITスタートアップのためにHeliumを開発しました。彼らは2019年末に会社を閉鎖しましたが、Heliumが消えてしまうのは残念だと考えました。
時間を費やし、Heliumに修正を加えてオープンソースに適した状態にしました。
以前はJavaとPythonの両方で利用できましたが今はPythonのみのようです。
これはJavaが苦手な私には大変ラッキーでした。(私見です)
以前はInternet Explorerをサポートしていましたが、この実装は削除しました。
業務ではEdgeを使っている会社はけっこう多いのではないでしょうか?
正式には書かれていませんがEdgeでも使用できます。これもすごくポイントが高いです。
EdgeがChromeベースの実装になったことが大きいと思うのですが、EdgeではChromeのいくつかの機能が無効になっているようなので何らかの問題が発生する可能性はあります。
私は今のところ問題は発生していません。
なにができるの? Seleniumとの違いは?
Webオートメーション(Web操作の自動化)ができます。Heliumは実際には裏でSeleniumを呼び出しています。
HeliumのAPIはSeleniumよりもハイレベルです。
SeleniumではWebの要素(テキストボックスやラジオボタンなど)を特定するためにHTML、ID、XPath、CSSセレクタなどを使用する必要があります。これはけっこうたいへんでHTMLのソースを確認しながら作業をすすめる必要があります。私はこれで挫折しました。
一方Heliumでは見たままのラベルで要素を特定できます。そのためスクリプトはSeleniumと比べて30~50%少なくてすみます。また非常にコードが読みやすくて直感的なため、Webページが変更された際もコードの変更が容易です。
CとPythonくらいの差があるような気がします。
より高レベルのAPIに加えてHeliumはSeleniumでは従来面倒であった次のタスクを簡素化します。
- HeliumはSeleniumの単なるラッパーなので、Heliumの中にSeleniumを混ぜて使う事ができます。
- ChromDriverとgeckodriveのコピーを同梱しているので、ドライバをダウンロードして配置する必要はありません。ただし、EdgeはMicrosoftのサイトからダウンロードして、ドライバの場所を指定する必要があります。
- Seleniumとは異なり、ネストされたiFrame内の要素を操作することが出来ます。
- ウィンドウの管理、ポップアップの開閉を認識し、ユーザと同じようにフォーカス/フォーカス解除を行います。またウィンドウのタイトル(の一部)で簡単にウィンドウを切り替えることが出来ます。Seleniumではウィンドウハンドルを繰り返し操作する必要があります。
- 暗黙の待機として、デフォルトで要素が表示されるまで最大10秒待ちます(設定で変更も可能)。Seleniumではその要素がまだページ上に無い場合、即エラーとなります。
- 明示的な待機として、Webページ上の条件がTrueになるのを待つために洗練されたAPIを提供します。
# 明示的な待機のサンプル
# Selenium
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
# Helium
wait_until(Button('Download').exists)
プロジェクトの状況
作者はHeliumを無償で維持する時間がないと言っており、以下の条件以外は更新は難しそうです。
- コンサル料を支払ってサポートを依頼する。
- 他の人にとって有用な機能のプルリクエストを作成してPRする。
どのように手伝うことができるか?
作者はHeliumはプロジェクトで非常に便利であり、もっと広く知られるべきだと考えています。支援する方法は以下の通りです。
- GitHubでこのプロジェクトにスターを付ける
- 友人や同僚にそのことを伝える
- ワンクリックでTwitterで共有
- 他のソーシャルメディアで共有する
- Heliumに関するブログ投稿を書く
最後に
heliumはseleniumのラッパーなので当然ながらseleniumが必要です。heliumはseleniumのバージョンを3.141.0に限定していますが、2022/11/01時点でseleniumの最新バージョンは4.5.0です。
seleniumのバージョンを最新にアップデートしようとすると以下のエラーが出ますので注意してください。
seleniumの最新版で動作するかどうかは時間があるときに試してみようと思います。
2022/11/05 Seleniumを最新バージョン 4.6.0にバージョンアップしましたが、私の環境では今のところ問題なく動作しています。
c:\Users\usr1> pip install selenium -U
...
...
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
helium 3.0.8 requires selenium==3.141.0, but you have selenium 4.5.0 which is incompatible.
簡単に直感的にブラウザを操作できるHeliumを使ってみませんか?
近々チートシートも和訳しますね。
コメント