手順としては、以下。
- WinAppDriverUiRecorder で対象となるセルのXPATHを求める
- find_element_by_xpath()でセルをappiumから接続
- そのセルをクリックすることで、選択
- send_keys()で値を入力
ただ、値の入力程度で、これだけの手間を要するのであれば、 openpyxl や xlrd の方がお手軽が印象です。
xlrd for python で excel (xlsx) を読む - end0tknr's kipple - 新web写経開発
# -*- coding: utf-8 -*- from appium import webdriver from selenium.webdriver.common.keys import Keys import pyautogui import win32gui import time def main(): ## appiumで、アプリ起動 desired_caps = {} desired_caps["app"] = r"c:\Users\end0t\Downloads\ないしょ_DEV_MACRO.xlsm" driver = webdriver.Remote( command_executor='http://127.0.0.1:4723', desired_capabilities= desired_caps) ## win32guiで、対象のアプリを探索 time.sleep(2) app_handle = win32gui.FindWindow(None, "ないしょ_DEV_MACRO.xlsm \[保護ビュー\] - Excel") print("APP HANDLE 0:",app_handle) ## pyautoguiで、ショートカット(ALT→F→I→E)を送信し、保護ビューを解除 if app_handle > 0 : pyautogui.press('alt') time.sleep(1) pyautogui.press('F') time.sleep(1) pyautogui.press('I') time.sleep(1) pyautogui.press('E') time.sleep(2) ## pyautoguiで、ショートカット(CTRL+I)を送信し、マクロ実行 ## (CTRL+Iのショートカットは、EXCEL上でALT+F8により設定画面表示) app_handle = win32gui.FindWindow(None, "最適テリトリー_DEV_MACRO.xlsm - Excel") print("APP HANDLE 1:",app_handle) if app_handle > 0 : pyautogui.hotkey('ctrl','i') ## とあるセルに値を入力 ## (CTRL+Iのショートカットは、EXCEL上でALT+F8により設定画面表示) xpath_str = \ "".join(["/Pane[@Name=\"デスクトップ 1\"][@ClassName=\"#32769\"]", "/Window[@Name=\"ないしょ_DEV_MACRO.xlsm - Excel\"][@ClassName=\"XLMAIN\"]", "/Pane[@ClassName=\"XLDESK\"]", "/Tab[@Name=\"ないしょ_DEV_MACRO.xlsm\"][@ClassName=\"EXCEL7\"]", "/TabItem[@Name=\"シート 数_旬別\"]", "/DataGrid[@Name=\"グリッド\"]/DataItem[@Name=\"B1\"]"]) try: xls_cell = driver.find_element_by_xpath(xpath_str) xls_cell.click() xls_cell.send_keys("HOGE FOO") time.sleep(5) except Exception as e: pass ## version check画面が単に見つからない場合、無視して進みます ## 終了 driver.quit() if __name__ == '__main__': main()