はじめに
今、WindowsアプリをPythonから自動操作しようとしています。
そこで、こちらサイトとこちらのサイトを参考にさせていただいていました。
とりあえず自分の環境で動くのかをsakuraエディタを動かすプログラムを参考に動作確認しました。
ですが、僕の環境では動きませんでした。
実施した手順
環境
- Window10
- python 3.9.7
実施した手順としては
- Windows SDKのインストール
- Windowsファイアウォールの設定(ポート4723を使えるようにする)
- WinAppDriverのインストール
- Windowsを設定から「開発者モード」に切り替える
- pipコマンドで「Appium-Python-Client」をインストール
- WinAppDriver.exe実行
- 作成プログラム実行
作成したプログラムは次の通り
# driver_test.py
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
desired_caps = {}
desired_caps["app"] = 'C:/Program Files (x86)/sakura/sakura.exe'
desired_caps["platformName"] = "Windows"
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4723',
desired_capabilities=desired_caps
)
notepad = driver.find_element(By.CLASS_NAME, "SakuraView166")
notepad.send_keys('一行目のNAME-TEXT\n')
Sakuraエディタを新規で作成し、1行目に「一行目のNAME-TEXT\n」を入力するというものです。
17行目の”SakuraView166″というのはInspect.exeで調べることができます。
エラーメッセージ
driver_test.pyを実行すると、次のようなエラーメッセージが
AttributeError: 'dict' object has no attribute 'send_keys'
表示されたのは最後の行のsend_keysの部分でした。
原因
原因を調べていると、どうやら使用しているライブラリのバージョン問題みたいです。
(参考にしたサイトが2019年のもので、当時は問題なく動いていたんだと思います)
このサイトにエラーの理由が書いてあります。
(やはり英語サイトは参考になります)
対処方法
Appiumは現在のSeleniumのバージョンではどうやら動かないのでダウングレードする必要があります。
手順としては、seleniumとAppium-Python-Clientのバージョンをダウングレードしました。
具体的には下の2つのpip installを実行。
pip install selenium==3.141.0
pip install Appium-Python-Client==2.2.0
pip installすると(Seleniumのバージョン4以上が必要という)警告メッセージが表示されます。
プログラムを実行すると以下のように表示されました。
まとめ
WindowsアプリをPythonで自動化するときのエラーメッセージ
AttributeError: ‘dict’ object has no attribute ‘send_keys’
は「selenium」と「Appium」のバージョンに気をつけるということでした。
今度より詳細なWindowのPythonによる自動化について手順を書こうと思います。
個人的な体感だと、詰まってしまった時の解決策は9割が英語サイトからの気がします。
エンジニアに英語必要説は僕は本当だなと思います
この記事がお役にたったのなら嬉しいです。
|
|