サーバレス練習帳

着眼大局着手小局

【python】pythonからWindowsを操作する!

ctypesか?
qiita.com
Cで作ったdllも読み込めるっぽい。
www.gesource.jp

IHTMLDocument3
fanblogs.jp

上記のプログラムを動かすには、pywinautoが必要かもしれない。
github.com

qiita.com
pipは使わず、上記リンクの通りにやった。

そして、pywin32も必要かもしれない。
github.com

自分の環境のpythonのバージョンを見ながら、以下を選択。f:id:urbanplanner:20181031195541p:plain
pywin32-222.win-amd64-py3.6.exe

そして、easy_installというコマンドを使ってインストールしました。
blog.mudatobunka.org


次のように書くと、ウインドウが全て列挙できるようだ。
ラムダ式、初めて使った。

import win32gui

win32gui.EnumWindows(lambda x, _: print(str(x)+' : '+win32gui.GetClassName(x)+' : '+win32gui.GetWindowText(x)), None)

teratail.com

ところで、このスクリプト中のアンダースコアは・・・? 次によると、使わないので無視しましょう的な変数を意味するようだ。つまり、アンダースコアには何も代入されていない。
qiita.com

IEFrameのEnumChildWindowがやりたかったら、次のように書こう。

import win32gui

win32gui.EnumChildWindows(win32gui.FindWindow(u"IEFrame",None),lambda x, _: print(str(x)+' : '+win32gui.GetClassName(x)+' : '+win32gui.GetWindowText(x)), None)

Seleniumと、それぞれのブラウザ

情報を整理しておいた方が良いと思いまして。
特に、「既に開いているブラウザ」を制御できるか?という視点は重要だと思います。

Chrome
・使い方はコチラ
serverless.hateblo.jp

・「既に開いているブラウザ」の制御
⇒ できなそうです。

Firefox
・ドライバはコチラ
github.com

・「既に開いているブラウザ」の制御
stackoverflow.com

[java] すでに開いているfirefoxをSeleniumでテストする方法 [selenium-webdriver] | CODE Q&A 問題解決 [日本語]

⇒ できるんじゃないか?試してみよう。
⇒ やっぱりできなそう。。。

Firefoxは制御モードにすると、こういうロボットのアイコンが出ます。
f:id:urbanplanner:20181027101429p:plain
⇒ やっぱりChromeでやるかな。。。