web-driver.ElementSet クラス

概要

複数の要素を制御するためのクラスです。

以下のモジュールのメソッドを持ちます:

上述のモジュールのメソッドを使えます。

インスタンスメソッド

find_elements(strategy, finder) -> web-driver.ElementSet

複数の要素をいくつかの検索方法で見つけます。 しかし、通常はこのメソッドの代わりにweb-driver.Searchableを使うほうが良いです。

strategy: 要素を検索する方法を指定します。引数を以下のように設定できます。

finder: 検索キーワードを指定します。

要素をweb-driver.ElementSetとして返します。

例:

local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()

local URL =
  "https://clear-code.gitlab.io/lua-web-driver/sample/"

driver:start_session(function(session)
  session:navigate_to(URL)

  local body = session:css_select('body')
  local elements = body:find_elements("css selector", 'p')
  for _,v in pairs(elements:texts()) do
    print(v)
-- Hello 1
-- Hello 2
-- Hello 3
  end
end)

text() -> string

このメソッドは、各要素のテキストを連結したテキストを1つの文字列として返します。

例:

local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()

local URL =
  "https://clear-code.gitlab.io/lua-web-driver/sample/"

driver:start_session(function(session)
  session:navigate_to(URL)

  local body = session:css_select('body')
  local elements = body:find_elements("css selector", 'p')
  print(elements:text())
-- Hello 1Hello 2Hello 3
end)

texts() -> {elements[1].text(), elements[2].text(), ...}

自分自身のテキストをテーブルとして返します。

例:

local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()

local URL =
  "https://clear-code.gitlab.io/lua-web-driver/sample/"

driver:start_session(function(session)
  session:navigate_to(URL)

  local body = session:css_select('body')
  local elements = body:find_elements("css selector", 'p')
  for _,v in pairs(elements:texts()) do
    print(v)
-- Hello 1
-- Hello 2
-- Hello 3
  end
end)

get_attribute(name) -> {elements[1]["name"], elements[2]["name"], ...}

name: 属性名を指定します。

それぞれの要素の指定した属性の値を返します。

例:

local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()

local URL =
  "https://clear-code.gitlab.io/lua-web-driver/sample/"

driver:start_session(function(session)
  session:navigate_to(URL)

  local body = session:css_select('body')
  local elements = body:find_elements("css selector", 'p')
  for _,v in pairs(elements:get_attribute("id")) do
    print(v)
-- p1
-- p2
-- p3
  end
end)

insert(element_or_position, element) -> void

このメソッドは、指定したweb-driver.Elementweb-driver.ElementSetへ挿入します。

2番目の引数がnilの場合は、最初の引数が挿入される要素になります。

2番目の引数がnilでない場合は、最初の引数が挿入位置、2番目の引数が挿入される要素になります。

挿入位置を指定しない場合、要素は最後に追加されます。

例:

local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()

local URL =
  "https://clear-code.gitlab.io/lua-web-driver/sample/"

driver:start_session(function(session)
  session:navigate_to(URL)

  local p = session:css_select('p')
  local checkbox = session:find_element("css selector", 'input[name=cheese]')
  p:insert(1, checkbox)
  print(p[1].name) -- cheese
end)

remove(element_or_position) -> web-driver.ElementSet

このメソッドは、web-driver.ElemetSetから、指定したweb-driver.Elementを削除します。

引数の型が数値の場合は、引数は削除位置になります。

引数の型が数値でない場合は、引数は削除される要素になります。

削除した要素をweb-driver.ElementSetとして返します。

例:

local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()

local URL =
  "https://clear-code.gitlab.io/lua-web-driver/sample/"

driver:start_session(function(session)
  session:navigate_to(URL)

  local elements = session:css_select('p')
  for _,v in pairs(elements:texts()) do
    print(v)
-- Hello 1
-- Hello 2
-- Hello 3
  end
  elements:remove(2)
  for _,v in pairs(elements:texts()) do
    print(v)
-- Hello 1
-- Hello 3
  end
end)

merge(element_set) -> web-driver.ElementSet

このメソッドは、指定したweb-driver.ElementSetをマージします。

指定したweb-driver.ElemetSetをマージした後のweb-driver.ElementSetを返します。

例:

local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()

local URL =
  "https://clear-code.gitlab.io/lua-web-driver/sample/"

driver:start_session(function(session)
  session:navigate_to(URL)

  local p = session:css_select('p')
  for _,v in pairs(p:texts()) do
    print(v)
-- Hello 1
-- Hello 2
-- Hello 3
  end

  local label = session:css_select('label')
  for _,v in pairs(label:texts()) do
    print(v)
-- Cheese
-- Wine
  end

  merged_element = p:merge(label)
  for _,v in pairs(merged_element:texts()) do
    print(v)
-- Hello 1
-- Hello 2
-- Hello 3
-- Cheese
-- Wine
  end
end)

click() -> void

要素をクリックします。

例:

local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()

local URL =
  "https://clear-code.gitlab.io/lua-web-driver/sample/button.html"

driver:start_session(function(session)
  session:navigate_to(URL)
  local elements = session:css_select('#announcement')
  elements:click()

  elements = session:css_select('a[name=announcement]')
  local informations_summary = elements:texts()
  for _, summary in ipairs(informations_summary) do
    print(summary)
  end
end)

send_keys(keys) -> void

要素に指定したキーを送信します。

keys: 送信キーワードを文字列として指定します。

例:

local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()

local URL =
  "https://clear-code.gitlab.io/lua-web-driver/sample/"

driver:start_session(function(session)
  session:navigate_to(URL)
  local elements = session:css_select('input[name=name]')
  elements:send_keys("This is test")
  print(elements[1].value) -- "This is test"
end)

参照