AttributeError: ‘WebDriver’ object has no attribute ‘w3c’

Python
本ページはプロモーションが含まれています

はじめに

ここ最近はPythonとSeleniumとWindAppDriverを使ったWindows内のアプリの自動化について調べている事が多かったです。

WindAppDriverはSelenium経由でWindowのローカルポートへアクセスしWindows内のアプリケーションを動かす事が出来ます(という理解をしていますが、詳細は不明ですw)

Python以外のプログラムも動くようですが僕はPython(ライブラリはAppium-Python-Client)を使っています。

そしてこのWinAppDriverはバージョンの問題を抱えていて、前回はそれで手こずりました。

そして今回はWindows内のアプリでダブルクリックをした場面でエラーになりました。

エラーメッセージ

Seleniumでクリックするだけならば.click()メソッドを使えば済みますが、ダブルクリックは簡単に行きませんでした。
ダブルクリックをする方法は参考サイトに書かれているAction Chainsを使う事で対応出来ました。

ただ、WindAppDriver上でこのAction Chainsを用いたダブルクリックをする処理(記述は参考サイト参照)

actionChains = ActionChains(driver)
・
・

actionChains.double_click(element).perform()

を入れると、

AttributeError: 'WebDriver' object has no attribute 'w3c'

といったメッセージが出ました。

対処方法

エラーメッセージを調べるとWinAppDriverでAction Chainsを用いる場合、やはり今回もバージョンの問題が。
解決方法は英語サイトに載ってました。
Stack Overflowはお世話になっているサイトです。

具体的な対処方法はAppium-Python-Clientのバージョンを下げることでした。
(使っていたのはAppium-Python-Clientの2.2)

pip install Appium-Python-Client==1.3.0

とすることでWinAppDriver上でSeleniumを動かす事ができ、Action Chainsも使える様になり、ダブルクリックの処理を入れる事が出来ました。

さいごに

Seleniumを使う人はほとんどがWebスクレイピング(クローリング)がメインだと思います。

Seleniumを使ったWindowsアプリ(WinAppDriver)の操作方法は情報がとても少ないです(解決方法があってよかったです)

あまり情報がないのでせっかくなので僕が調べたこれまでのWindowsの自動化の流れについてはまとめてみようと思います。

前も書きましたが、プログラマーにとって英語ができるととても有利だと思います。

僕は英検準1級(Toeic 830)ですが、このレベルであれば簡単な英語の論文や技術系記事は読める様になると思います。
余裕があれば英語の勉強もおすすめします。
(自分でもプログラムスキルは凡庸だと思ってます。英語も日常会話レベルですが両方できると相乗効果はあるかと)

 

 

今回の記事がお役に立ったのならば嬉しいです。

タイトルとURLをコピーしました