Selenium実戦チュートリアルシリーズ(二)---要素の位置づけ


Selenium webdriverがブラウザの操作をシミュレートできるのは,インタフェース要素の位置決めが前提である.要素の位置付けはSelenium自動化スクリプトの基礎と言える.このセクションでは、seleniumで要素の位置付けを行う方法について説明します.
要素の配置方法
Seleniumでは、まずHTMLファイルtest_を参照して要素を配置する方法があります.page.:

    
        

Home Page

1. id
要素のidによってusername入力ボックスの位置決めが完了する.
require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"

# by id
dr.find_element(:id, 'input username').click

2.name
要素のname属性によってusername入力ボックスの位置決めが完了します.
require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"

# by name
dr.find_element(:name, 'username').click

3. class name
要素のclass属性によってusername入力ボックスの位置決めが完了します.
require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"

# by name
dr.find_element(:class, 'input').click

4.link textとpartial link text
リンク要素のtextプロパティを使用して、Home Pageリンクの配置を完了します.
require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"

# by link_text
link_text = dr.find_element(:link_text, 'Home Page').get_text
puts link_text

# by partial_link_text
link_text = dr.find_element(:partial_link_text, 'Home').get_text
puts link_text

5. tag name
ラベルのnameでheader要素の位置決めを完了
require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"

# by tag name
header_text = dr.find_element(:tag_name, 'h3').get_text
puts header_text

6. xpath
xpathはHTMLドキュメントの要素を特定するための一般的な方法であり、独自の文法規則があり、様々な関数をサポートしており、最も包括的な位置決め方法と言える.私がSeleniumオートメーションの例を開発する過程で、最も多く使用したのはxpathです.ここでは簡単な例だけでxpathの位置決め使用を説明し,具体的なxpathの使用は別のテーマで紹介する.
require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"

# by xpath
dr.find_element(:xpath, "//tr/td/input[@value='women']").click

7. css selector
css selectorはxpathと同様に、非常に強力な位置決め方法でもあります.しかし、xpathとは異なり、css selectorは後方位置決めのみをサポートし、xpathは前方位置決めと後方位置決めをサポートすることができる.次の例では、xpath例の同じ要素をcss selectorで位置決めする方法を示します.
require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"

# by css selector
dr.find_element(:css, "tr>td>input[value='women']").click

要素のセットの配置
Seleniumでは、複数のオプション選択やテーブル要素を処理するときに便利な要素のセットを同時に取得することがサポートされています.
require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"

# Get number of items
num_of_tds = dr.find_elements(:tag_name, "td").count