web-driver.Session
クラスWebDriverのセッションを制御するクラスです。
以下のモジュールのメソッドを持ちます:
web-driver.Element
: 要素の制御をするクラスです。web-driver.ElementSet
: 複数の要素を制御するクラスです。web-driver.Searchable
: 要素の検索関連のメソッドを提供します。上述のモジュールのメソッドを使えます。
navigate_to(url) -> void
このメソッドは指定したURLのWebサイトへ移動します。
url
: 移動したいWebサイトのURLを指定します。
例:
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)
end)
status_code() -> number
HTTPステータスコードを数値として返します。
リクエストが正常に終了した場合は、HTTPステータスコードは200です。リクエストが正常に終了しない場合は、HTTPステータスコードは200以外です。
ただし、このメソッドは失敗することがあります。WebDriverがこの機能をサポートしていないためです。
このメソッドが失敗した場合は、nilを返します。
例:
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(CORRECT_URL)
local status_code = session:status_code()
print(status_code)
-- 200
end)
request_headers -> {Host="xxxx", Accept-Encoding="xxxx", Connection="xxxx", Accept="xxxx", User-Agent="xxxx", Upgrade-Insecure-Requests="xxxx", Accept-Language="xxxx"}
最後のHTTPリクエストのヘッダーをテーブルとして返します。
例:
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 request_headers = session:request_headers()
for k,v in pairs(request_headers) do
print(k,v)
-- Host clear-code.gitlab.io
-- Accept-Encoding gzip, deflate, br
-- Connection keep-alive
-- Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
-- User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
-- Upgrade-Insecure-Requests 1
-- Accept-Language ja,en-US;q=0.7,en;q=0.3
end
end)
url() -> string
現在のWebサイトのURLを文字列として返します。
例:
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)
print(session:url())
-- https://clear-code.gitlab.io/lua-web-driver/sample/
end)
forward() -> void
現在のWebサイトから履歴を1つ先へ辿ります。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL1 = "https://clear-code.gitlab.io/lua-web-driver/sample/"
local URL2 = "https://clear-code.gitlab.io/lua-web-driver/sample/button.html"
driver:start_session(function(session)
session:navigate_to(URL1)
session:navigate_to(URL2)
print(session:url())
--https://clear-code.gitlab.io/lua-web-driver/sample/button.html
session:back()
print(session:url())
--https://clear-code.gitlab.io/lua-web-driver/sample/
session:forward()
print(session:url())
--https://clear-code.gitlab.io/lua-web-driver/sample/button.html
end)
back() -> void
現在のWebサイトから履歴を1つ後ろへ辿ります。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL1 = "https://clear-code.gitlab.io/lua-web-driver/sample/"
local URL2 = "https://clear-code.gitlab.io/lua-web-driver/sample/button.html"
driver:start_session(function(session)
session:navigate_to(URL1)
session:navigate_to(URL2)
print(session:url())
--https://clear-code.gitlab.io/lua-web-driver/sample/button.html
session:back()
print(session:url())
--https://clear-code.gitlab.io/lua-web-driver/sample/
end)
refresh() -> void
現在のWebサイトをリロードします。
このメソッドを実行した時に、保存していない値はクリアされ、リアルタイムの情報は更新されます。
例:
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
session:refresh()
local refreshed_elements = session:css_select('input[name=name]')
print(refreshed_elements[1].value)
-- ""
end)
title() -> string
現在のWebサイトのタイトルを取得します。
例:
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)
print(session:title())
-- This is test html
end)
window_handle() -> string
現在のウインドウのウインドウハンドルを取得します。
文字列としてウインドウハンドルを返します。
このウインドウハンドルは、複数のウインドウを切り替えたり、ウインドウを特定したりするのに使います。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL = "https://clear-code.gitlab.io/lua-web-driver/sample/window.html"
driver:start_session(function(session)
session:navigate_to(URL)
local next_handle = session:window_handles()[2]
print(session:window_handle())
-- 2147483649
session:switch_to_window(next_handle)
print(session:window_handle())
-- 2147483656
end)
close_window() -> {remaining_window_handle1, remaining_window_handle2, ...}
現在のウインドウをクローズします。残っているウインドウのハンドルをテーブルとして返します。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL = "https://clear-code.gitlab.io/lua-web-driver/sample/window.html"
driver:start_session(function(session)
session:navigate_to(URL)
remaining_handles = session:close_window()
session:switch_to_window(remaining_handles[1])
end)
switch_to_window(handle) -> void
指定したハンドルのウインドへ切り替えます。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL = "https://clear-code.gitlab.io/lua-web-driver/sample/window.html"
driver:start_session(function(session)
session:navigate_to(URL)
remaining_handles = session:close_window()
session:switch_to_window(remaining_handles[1])
end)
window_handles() -> {window_handle1, window_handle2, ...}
現在のセッションのウインドウハンドルを取得します。
テーブルとして、ウインドウハンドルを返します。
このウインドウハンドルは、複数のウインドウを切り替えたり、ウインドウを特定したりするのに使います。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL = "https://clear-code.gitlab.io/lua-web-driver/sample/window.html"
driver:start_session(function(session)
session:navigate_to(URL)
local window_handles = session:window_handles()
for _,handle in pairs(window_handles) do
print(handle)
--2147483649
--2147483656
--2147483653
end
print(session:window_handle())
--2147483649
session:switch_to_window(window_handles[2])
--2147483656
print(session:window_handle())
maximize_window() -> void
現在のウインドウを最大化します。
例:
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)
session:set_window_rect({ height = 500, width = 500, x = 0, y = 0 })
for k,v in pairs(session:window_rect()) do
print(k,v)
end
-- y 0
-- width 500
-- height 500
-- x 0
session:maximize_window()
for k,v in pairs(session:window_rect()) do
print(k,v)
end
-- y 0
-- width 1366
-- height 768
-- x 0
end)
minimize_window() -> void
現在のウインドウを最小化します。
例:
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)
session:set_window_rect({ height = 500, width = 500, x = 0, y = 0 })
for k,v in pairs(session:window_rect()) do
print(k,v)
end
-- y 0
-- width 500
-- height 500
-- x 0
session:minimize_window()
for k,v in pairs(session:window_rect()) do
print(k,v)
end
-- y 0
-- width 0
-- height 0
-- x 0
end)
fullscreen_window() -> {height=xxxx, width=xxxx, x=xxxx, y=xxxx}
現在のウインドウをフルスクリーンにします。フルスクリーン時のウインドウのサイズと位置をテーブルとして返します。
例:
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)
session:set_window_rect({ height = 500, width = 500, x = 0, y = 0 })
for k,v in pairs(session:window_rect()) do
print(k,v)
end
-- y 0
-- width 500
-- height 500
-- x 0
session:fullscreen_window()
for k,v in pairs(session:window_rect()) do
print(k,v)
end
-- y 0
-- width 1366
-- height 768
-- x 0
end)
window_rect() -> {height=xxxx, width=xxxx, x=xxxx, y=xxxx}
現在のウインドウのサイズと位置を取得します。現在のウインドウのサイズと位置をテーブルとして返します。
例:
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)
session:set_window_rect({ height = 500, width = 500, x = 0, y = 0 })
for k,v in pairs(session:window_rect()) do
print(k,v)
end
-- y 0
-- width 500
-- height 500
-- x 0
end)
set_window_rect(rect) -> table
現在のウインドウのサイズを設定します。
例:
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)
session:set_window_rect({ height = 500, width = 500, x = 0, y = 0 })
for k,v in pairs(session:window_rect()) do
print(k,v)
end
-- y 0
-- width 500
-- height 500
-- x 0
end)
switch_to_frame(id) -> void
id
: 切り替えたいフレームのIDを数字として指定します。
指定したIDのフレームへ切り替えます。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL = "https://clear-code.gitlab.io/lua-web-driver/sample/frame.html"
driver:start_session(function(session)
session:navigate_to(URL)
print(session:title())
-- This is parent frame
session:switch_to_frame(0)
local element = session:find_element("css selector", "p")
print(element:text())
-- 1
print(session:title())
-- This is test html 1
end)
switch_to_parent_frame() -> void
現在のフレームの親フレームに切り替えます。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL = "https://clear-code.gitlab.io/lua-web-driver/sample/frame.html"
driver:start_session(function(session)
session:navigate_to(URL)
print(session:title())
-- This is parent frame
session:switch_to_frame(0)
local element = session:find_element("css selector", "p")
print(element:text())
-- 1
print(session:title())
-- This is test html 1
session:switch_to_parent_frame()
element = session:find_element("css selector", "p")
print(element:text())
-- parent
print(session:title())
-- This is parent frame
end)
find_element(strategy, finder) -> web-driver.Element
いくつかの検索方法を使って要素を見つけます。
strategy
: 要素を検索する方法を指定します。引数を以下のように設定できます。
css selector
: CSSセレクターを使って要素を検索します。link text
: Link text selectorを使って要素を検索します。partical link text
: Partical link text selectorを使って要素を検索します。tag name
: Tag名を使って要素を検索します。xpath
: XPath使って要素を検索します。finder
: 検索キーワードを指定します。
要素をweb-driver.Element
として返却します。
例:
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 element = session:find_element("css selector", "#p1")
element:save_screenshot("element.png")
end)
find_elements(strategy, finder) -> web-driver.ElementSet
複数の要素をいくつかの検索方法で見つけます。
strategy
: 要素を検索する方法を指定します。引数を以下のように設定できます。
css selector
: CSSセレクターを使って要素を検索します。link text
: Link text selectorを使って要素を検索します。partical link text
: Partical link text selectorを使って要素を検索します。tag name
: Tag名を使って要素を検索します。xpath
: XPath使って要素を検索します。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 elements = session:find_elements("css selector", 'p')
for _,v in pairs(elements:texts()) do
print(v)
-- Hello 1
-- Hello 2
-- Hello 3
end
end)
active_element() -> web-driver.Element
現在のWebサイトでアクティブな要素をweb-driver.Element
として返します。
例:
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 text_form = session:active_element()
text_form:send_keys("This is test")
print(text_form[1].value)
-- This is test
end)
xml() -> string
現在のWebサイトのソースをXMLとして返します。このXMLはLuaの文字列として使えます。
例:
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 xml = session:xml()
print(xml)
end)
execute_script(script, args) -> the return value of given script
指定したJavascriptを実行します。与えられたスクリプトの戻り値を返します。
例:
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 script = [[return 1]]
print(session:execute_script(script))
-- 1
end)
execute_script_async(script, args) ->
指定したJavascriptを非同期なスクリプトとして実行します。与えられたスクリプトの戻り値を返します。
例:
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 script = [[return 1]]
print(session:execute_script_async(script))
-- 1
end)
all_cookies() -> table
現在のWebサイトの全てのクッキーを取得します。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL =
"https://clear-code.gitlab.io/lua-web-driver/sample/cookie.html"
driver:start_session(function(session)
session:navigate_to(URL)
local cookies = session:all_cookies()
print(cookies[1].name, cookies[1].value)
-- data1 123
print(cookies[2].name, cookies[2].value)
-- data2 456
end)
get_cookie(name) -> table
指定したクッキーを取得します。
name
: 取得したいクッキーの名前を文字列で指定します。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL =
"https://clear-code.gitlab.io/lua-web-driver/sample/cookie.html"
driver:start_session(function(session)
session:navigate_to(URL)
local cookie = session:get_cookie("data1")
print(cookie.name, cookie.value)
-- data1 123
end)
add_cookie(cookie) -> void
cookie
: 追加するクッキーをテーブルとして指定します。
現在のWebサイトへ指定したクッキーを追加します。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL =
"https://clear-code.gitlab.io/lua-web-driver/sample/cookie.html"
driver:start_session(function(session)
session:navigate_to(URL)
local cookies = session:all_cookies()
print(#cookies)
-- 2
local cookie = {
name = "data3",
value = "789",
}
session:add_cookie(cookie)
cookies = session:all_cookies()
print(#cookies)
-- 3
print(cookies[3].name, cookies[3].value)
-- data3 789
end)
delete_cookie(name) -> void
name
: 削除するクッキーの名前を文字列として指定します。
指定したクッキーを現在のWebサイトから削除します。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL =
"https://clear-code.gitlab.io/lua-web-driver/sample/cookie.html"
driver:start_session(function(session)
session:navigate_to(URL)
local cookies = session:all_cookies()
print(#cookies)
-- 2
session:delete_cookie("data1")
cookies = session:all_cookies()
print(#cookies)
-- 1
print(cookies[1].name, cookies[1].value)
-- data2 456
end)
delete_all_cookies() -> void
現在のWebサイトの全てのクッキーを削除します。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL =
"https://clear-code.gitlab.io/lua-web-driver/sample/cookie.html"
driver:start_session(function(session)
session:navigate_to(URL)
local cookies = session:all_cookies()
print(#cookies)
-- 2
session:delete_all_cookies("data1")
cookies = session:all_cookies()
print(#cookies)
-- 0
end)
perform_actions(actions) -> void
actions
: アクションをテーブルとして指定します。
このメソッドは、引数に指定されたアクションをまとめて実行します。
アクションの作り方については、WebDriver
の仕様を参照して下さい。
release_actions() -> void
このメソッドは、現在押されている全てのキー、ポインタのボタンを離します。
dismiss_alert() -> void
現在のダイアログの"Cancel"ボタンを押下します。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL =
"https://clear-code.gitlab.io/lua-web-driver/sample/confirm.html"
driver:start_session(function(session)
session:navigate_to(URL)
local element = session:find_element("css selector", "#button")
element:click()
session:dismiss_alert()
element = session:find_element("css selector", "#confirm")
print(element:text())
-- Dismiss!
end)
accept_alert() -> void
現在のダイアログの"OK"ボタンを押下します。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL =
"https://clear-code.gitlab.io/lua-web-driver/sample/confirm.html"
driver:start_session(function(session)
session:navigate_to(URL)
local element = session:find_element("css selector", "#button")
element:click()
session:accept_alert()
element = session:find_element("css selector", "#confirm")
print(element:text())
-- Accept!
end)
alert_text() -> string
現在のダイアログのテキストを取得します。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL =
"https://clear-code.gitlab.io/lua-web-driver/sample/confirm.html"
driver:start_session(function(session)
session:navigate_to(URL)
local element = session:find_element("css selector", "#button")
element:click()
print(session:alert_text())
-- ok?
end)
set_alert_text(text) -> void
text
: ダイアログのテキストを文字列として指定します。
現在のダイアログに指定したテキストを設定します。
例:
local web_driver = require("web-driver")
local driver = web_driver.Firefox.new()
local URL =
"https://clear-code.gitlab.io/lua-web-driver/sample/confirm.html"
driver:start_session(function(session)
session:navigate_to(URL)
local element = session:find_element("css selector", "#button")
element:click()
print(session:alert_text())
-- ok?
session:set_alert_text("setting text")
print(session:alert_text())
-- setting text
end)
take_screenshot() -> string
現在のWebサイトのスクリーンショットを文字列(PNG形式のデータ)として返します。
例:
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 png = element:take_screenshot()
end)
save_screenshot(filename) -> void
現在のWebサイトのスクリーンショットをPNG形式で指定したファイルに保存します。
例:
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)
session:save_screenshot("sample.png")
end)
web-driver.Searchable
: 要素検索関連のメソッドを提供します。
web-driver.ElementSet
: 複数の要素を扱うクラスです。