読者です 読者をやめる 読者になる 読者になる

Watir練習帳2 - 要素を選択する

Watir

要素をindexで選択する

1番目のフォームに何かを入力して投稿したいという場合は、

browser.forms[1].submit

のようにformsプロパティを使えばよい。indexは1から始まるのが注意点。formに限らず、

# 最初のimg要素
browser.images[1]

# 2番目のtable要素
browser.tables[2]

のように要素名を複数形にすればだいたい通るようだ。以下のようなhtmlの場合、

<html>
  <body>
    <p>spam</p>
    <p>egg</p>
    <p>ham</p>
  </body>
</html>

p要素を取得するにはpsだった。pの複数形がpsなのは常識。

browser.ps[1].text == "spam"
browser.ps[2].text == "egg"
browser.ps[3].text == "ham"

xpathで要素を取得する

最初のdiv要素をxpathで取得。

browser.element_by_xpath("//div[position()=1]")

divをすべて取得。

browser.elements_by_xpath("//div")

browser.form, browser.linkメソッド等もxpathで指定できる。

browser.form(:xpath, "//form[contains(@action, 'new')]")

checkbox

oneというnameのcheckboxをチェック/クリアする。

# チェックする
browser.checkbox(:name, "one").set

# クリアする
browser.checkbox(:name, "one").clear

oneというnameのcheckboxがチェックされているかどうか。

browser.checkbox(:name, "one").checked?

複数のチェックボックスをまとめてチェックする。checkboxの複数形がcheckboxesなのは常識。

browser.checkboxes.each { |c| c.set }

select

selectは browser.select ではなく browser.select_list で要素を選択。次の例は、最初のselect要素のoptionを列挙する。

b.select_list(:index, 1).options

選択されているoptionを列挙。

b.select_list(:index, 1).selected_options

"Options 1"という選択肢が選択されているかどうか。

b.select_list(:index, 1).selected("Option 1")

スクリーンショットをとる

Windowsではペイントが起動してキャプチャーした画像をペーストして保存というのを自動でやってくれるが、他のOSではどうなるかは試していない。

require 'watir'
require 'watir/screen_capture'

include Watir::ScreenCapture

browser = Watir::Browser.start("http://zynga.com/")
browser.bring_to_front
browser.maximize
browser.screen_capture("Z:\\zynga.jpg")