Seleniumコードサンプル#1 要素の習得と操作
自動テストのための学習のため、Seleniumコードサンプル(要素の習得と操作)を実施してみます。
以前、読んだpython用の書籍だとすでに試せるサイトが大幅に変わってしまったので、
自分でHTMLファイルを作成して、疑似的に下記の構成を確認してみることにしました。
[画面イメージ]
今回は下記の内容を試してみました。
このサンプルのゴールは、単一ページの入力と操作を完遂することです。
【項目】
・要素の取得(by name)
・要素の操作
・テキストフォームの入力(Username,Password)
・ドロップダウンの選択(Month)
・ボタンを押す(Submit)
[selenium_html.py]
import unittest import time from selenium import webdriver from selenium.webdriver.support.ui import Select class SearchTests(unittest.TestCase): def setUp(self): # create a new Chrome session self.driver = webdriver.Chrome(executable_path=r'C:/tmp/selenium/chromedriver_win32/chromedriver.exe') self.driver.implicitly_wait(30) self.driver.maximize_window() # navigate to page self.driver.get("file:///C:/cygwin64/home/User/selenium/sample.html") # 個別で変えてください def test_samplehtml(self): # get the search textbox # input ID/PASS and push submit botton id = self.driver.find_element_by_name("Username") id.send_keys("odan") password = self.driver.find_element_by_name("Password") password.send_keys("odanPASS") dropdownlist = self.driver.find_element_by_name("Month") month_select_element = Select(dropdownlist) month_select_element.select_by_value("jul") time.sleep(5) self.driver.find_element_by_name("Submit").click(); self.assertEqual(10, 10) def tearDown(self): # close the browser window self.driver.quit() def SamplehtmlTestsuite(): # select testcases for SearchTestSuite suite = unittest.TestSuite() suite.addTest(SearchTests('test_samplehtml')) return suite if __name__ == '__main__': runner = unittest.TextTestRunner(verbosity=2) runner.run(SamplehtmlTestsuite())
[sample.html]
<html> <body> <!-- 入力フォーム --> <form id="loginForm"> <label>Enter Username: </label> <input type="text" name="Username"/> <label>Enter Password: </label> <input type="password" name="Password"/> <!-- ドロップダウンリスト --> <select name="Month"> <option value="jan">1月</option> <option value="feb">2月</option> <option value="mar">3月</option> <option value="apr">4月</option> <option value="may">5月</option> <option value="jun">6月</option> <option value="jul">7月</option> <option value="aug">8月</option> <option value="sep">9月</option> <option value="oct">10月</option> <option value="nov">11月</option> <option value="dec">12月</option> </select> <!-- ボタン --> <input type="submit" name="Submit"/> </form> <a href="forgotPassword.html">Forgot Password ?</a> </body> </html>
【まとめ】
要素を見つけて、どれを使うのかは、テスト対象となるサイト次第なのだろうなと思いました。
そのため、自動テストを想定しておくならば、idやnameなどの要素をきちんと統一性をもって設計できているかを見る必要がありそうです。
(他の書籍を見てみると比較的xpathが利用されていそうなので、その使い方も重要になってきそう…)
次回は、この簡単なHTMLサイトでデータ駆動テストを作成してみたいと思います。