Watirを使用してRubyからWebブラウザを制御する方法
RubyでWebブラウザを制御できることをご存知ですか?
Watirの宝石を使用すると、これを行うことができます。
最新のブラウザのフルパワーが付属しています :
- ページの表示領域のスクリーンショットを撮ることができます
- 開発者ツールを手動で開いてコードを入力しなくても、任意のページでJavaScriptを実行できます
- リンクを見つけてクリックし、入力フィールドにテキストを入力することもできます
Watir&Seleniumプロジェクトのおかげで、これらすべてを利用できます。
いくつかのコード例を見てみましょう!
ブラウザの起動
まず、次のようなブラウザオブジェクトを作成します。
require 'watir' browser = Watir::Browser.new
これにより、今すぐ制御できる空のChromeウィンドウが開きます(インストールされている場合)。
例 :
browser.goto("rubyguides.com")
ChromeはこのURLに移動し、自分でURLを入力したかのようにページが読み込まれます。
今 :
マウスとキーボードを使用して、Webサイトで通常行うことは何でもできます。
リンクを見つけてクリックするようなものです。
例 :
browser.link(text: "All Posts").click
Watirで要素を見つける方法
次のような属性で要素を見つけることができます:
- テキスト
- クラス
- id
これらの要素にはHTML名と一致するメソッドがあるため、H1タグを探している場合、メソッドはh1
です。 、段落の場合、メソッドはp
です。 &画像の場合、メソッドはimg
のいずれかです。 またはimages
。
例 :
browser.h1(text: "Ruby Post Index")
メソッド名の複数形を使用して要素のリストを取得することもできます。
例 :
browser.links browser.images browser.h2s
これにより、Watir::AnchorCollection
が提供されます オブジェクトは、それぞれのようなメソッドに応答し、マップして挿入します。
例 :
browser.links.map(&:href)
存在しないタイムアウトと要素に対処する方法
要素がまだページに読み込まれていないか、ページが変更されている可能性があるため、要素が存在しない可能性があります。
Watirが要素を見つけられない場合はどうなりますか ?
タイムアウトがあります。
デフォルトでは30秒ですが、変更できます:
Watir.default_timeout = 10
有効期限が切れると、Watir::Exception::UnknownObjectException
が発生します 例外。
しかし、これを処理する別の方法があります!
要素をクリックしたり、他のアクションを実行したりする前に、要素が存在するかどうかを確認できます。
方法は次のとおりです :
link = browser.link(text: 'Guides') if link.present? link.click end
スクレンショットの撮り方
ブラウザを開いてページを読み込んだら、そのスクリーンショットを撮ることができます。
このように :
browser.screenshot.save("/tmp/screen.png")
これにより、現在のビューポートの画像が保存されます。
スクリプトの実行
ブラウザでJavascriptを実行してページの現在の状態に影響を与えるか、そのページで定義されているJavascript関数を呼び出すことができます。
方法は次のとおりです :
browser.execute_script "alert('bacon')" # nil
結果は?
「ベーコン」という言葉が表示されたアラートウィンドウ🙂
コードを実行して結果を取り戻す :
browser.execute_script "return 1 + 1" # 2
入力フィールドへの入力方法
入力フィールドへの入力には、次の2つの手順が含まれます。
- 要素を見つける
- キーを送信
ここに例があります :
browser.input(id: "search").send_keys("orange juice")
次に、送信ボタンを見つけてクリックする必要があります。
役立つWatirの方法とヒント
Watirを使用すると、いくつかの便利な方法にアクセスできます。
たとえば、現在のURLを取得します :
browser.url
開いているタブのリストを取得する :
browser.windows
現在のウィンドウを最大化する :
browser.window.maximize
現在のページのHTMLとテキストを取得する :
browser.text browser.html
また、部分的に一致する要素を検索する場合のヒントは、正規表現を使用できます。
このように :
browser.p(text: /ruby/)
概要
このチュートリアルでは、Watirについて学習しました。これは、Webブラウザーをリモート制御して、タスクを自動化し、ページから情報を抽出できるRubygemです。
より多くの人が見つけられるように、役立つと思われる場合は、この記事を共有してください。
読んでくれてありがとう。
-
Raspberry Pi で 3D プリンターを制御する方法
初心者にとって、3D プリントは困難な趣味のように思えるかもしれません。ただし、すべてがどのように機能するかを理解すると、3D プリントは楽しく楽しいものになります。初心者の場合、Windows 10 で使用するプラグアンドプレイ 3D プリンターを購入したくなるかもしれません。いくつかの例には、Monoprice Select Mini Pro (250 ドル) や Snapmaker 3-in-1 3D プリンター (800 ドル) が含まれます。 3D プリントに加えて、レーザー彫刻と CNC フライス加工機能を提供します。どちらのプリンターもエントリー レベルの選択肢として適しています
-
Web ブラウザから自動再生 GIF を無効にする方法
アニメーション GIF は、静止画像に命を吹き込む最良の方法です。さまざまな画像形式 (JPEG、PNG) と比較して、メッセージや情報を簡単かつ適切に伝えることができます。それらは興味深く、面白く、自明であり、一度に無意味になる可能性があります.それらの最良の部分は、それらがどのように伝達され、使用されるかです。しかし、それらは時々混乱を招き、本当に迷惑になることがあります。個人的には、これらのアニメーションが許可なく自動再生されるのが好きではありません。また、帯域幅の負荷を消費し、ページの読み込みが遅くなります。しかし、幸いなことに、これらの自動再生 GIF は Web ブラウザーから停止