目次
はじめに
3回シリーズの2回目です。
環境構築等は第一回目を参照ください。
画面パーツの情報収集
画面のテキストボックスやボタンなどの画面パーツを「Element(エレメント)」と呼びます。
これが取得できないと、操作のなにもできないので、エレメントを選択する方法を把握しておく必要があります。
WinAppDriverがサポートするエレメント取得方法の一覧がこの資料にあります。
ただ、こちらの資料はC#とかで使う命名規則っぽく、そのままPythonには書けません。
pythonのメソッドを追記して加工してみました。
Client API | Python | inspect.exe |
---|---|---|
FindElementByAccessibilityId | find_element_by_accessibillity_id | AutomationId |
FindElementByClassName | find_element_by_class_name | ClassName |
FindElementById | find_element_by_id | RuntimeId (decimal) |
FindElementByName | find_element_by_name | Name |
FindElementByTagName | find_element_by_tag_name | LocalizedControlType (upper camel case) |
FindElementByXPath | find_element_by_xpath | Any |
これらを使うには引数としてキー情報を渡します。
これはinspect.exeを使って取得する前提で上記資料は書かれてます。
ただ、自分が試してみた感じだと。
- find_element_by_accessibillity_id
- find_element_by_class_name
- find_element_by_name
の3つ以外は少々使い方が難しいので、当面、この3つでやってみます。
調査ツール:inspect.exe
調べるには、inspect.exeを起動してた状態で、調べたいアプリケーションの項目にフォーカスをあてます。
すると、右側のウィンドウに情報が表示されます。
inspect.exeの起動の方法とかは、前回の記事を参照ください。
例えば、さくらエディタの入力画面をポイントしている時の例です。
これを見ると、NameもClassNameの「SakuraView166」だということがわかります。
こんな感じで、適切なキーワードを探すのでしょうね。
さくらエディタで操作を試してみる
とりあえず、以下の処理を自動化してみます。
- さくらエディタを開く
- 3行文字列を入力する
- 編集>すべて選択で「全選択」する
- 変換>小文字で「英大文字をすべて小文字に変換」する
ソースはこんな感じになります。
py_windriver_test01.py
import unittest from appium import webdriver class SampleTests(unittest.TestCase): def setUp(self): # set up appium desired_caps = {} # さくらエディター desired_caps["app"] = 'C:/Program Files (x86)/sakura/sakura.exe' self.driver = webdriver.Remote( command_executor='http://127.0.0.1:4723', desired_capabilities=desired_caps) def tearDown(self): self.driver.quit() def test_input(self): # Nameによる取得 el01 = self.driver.find_element_by_name("SakuraView166") # 文字列の書き込み el01.send_keys('一行目のNAME-TEXT\n') el01.send_keys('二行目のName-Text\n') # Class_Nameによる取得 el02 = self.driver.find_element_by_class_name("SakuraView166") # 追加書き込み el02.send_keys('追加行Class_Name-Text\n') # 編集メニューを開き、すべて選択を選ぶ self.driver.find_element_by_name('編集(E)').click() self.driver.find_element_by_accessibility_id("30401").click() # 変換メニューを開き、英大文字を英小文字に変換する self.driver.find_element_by_name('変換(C)').click() self.driver.find_element_by_accessibility_id("30800").click() # とりあえず結果は目視で確認するので、テストは強制OKにしておく self.assertTrue(1) if __name__ == '__main__': suite = unittest.TestLoader().loadTestsFromTestCase(SampleTests) unittest.TextTestRunner(verbosity=2).run(suite)
特に終了処理はいれていませんが、最後は自動的にアプリケーションは終了します。
さくらエディタの場合は、ファイルの保存ダイアログが表示されてとまるので、そこで結果は目視確認できます。
なので、テストの中で結果確認ははしょって、常にOKを返すようにしました。
うまく動いた時の結果画面はこんな感じ。
うん。
- エレメントの取得
- 値のセット
- クリック
この3つは何とかできました。
メニューの操作も、ちゃんとメニューを開いてから選択する・・の順序を守れば、うまくいくこともわかりました。
ではでは。