end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

appium + pyautogui + win32gui for python で、excelの保護ビューを解除 - RPAもどき

f:id:end0tknr:20190502034149p:plain

appium + windows app driver で、ダウンロードされたexcelファイルに対する 自動操作を行おうとしましたが、「保護ビュー」がある為、操作できない。

WinAppDriver UI Recorderで「編集を有効にする」ボタンのXPATHを調べ、 これをクリックしようとしても、できない。

appium + windows app driver では不可能と判断し、pyautogui + win32gui の力も借りることにしました。

で、以下が、そのpython script。

# -*- 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_ORG.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_ORG.xlsm  [保護ビュー] - Excel")
    print("APP HANDLE:",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')
        
    
    ## 終了
    driver.quit()


if __name__ == '__main__':
    main()