私は自動テストを行い、ファイルダイアログを取得します。私は、Pythonまたはセレンでウィンドウを開くファイルダイアログボックスからファイルを選択したい。自動的にPythonのWindowsファイルダイアログからファイルを開く
注:ダイアログは他のプログラムによって提供されます。私はTkinterで作成したくありません。
:
ウィンドウは次のようになります。
これを行う方法?
私は自動テストを行い、ファイルダイアログを取得します。私は、Pythonまたはセレンでウィンドウを開くファイルダイアログボックスからファイルを選択したい。自動的にPythonのWindowsファイルダイアログからファイルを開く
注:ダイアログは他のプログラムによって提供されます。私はTkinterで作成したくありません。
:
ウィンドウは次のようになります。
これを行う方法?
ctypesライブラリを使用できます。
は、このコード考えてみましょう:すべての開いているウィンドウの
import ctypes
EnumWindows = ctypes.windll.user32.EnumWindows
EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int))
GetWindowText = ctypes.windll.user32.GetWindowTextW
GetWindowTextLength = ctypes.windll.user32.GetWindowTextLengthW
SendMessage = ctypes.windll.user32.SendMessageW
IsWindowVisible = ctypes.windll.user32.IsWindowVisible
def foreach_window(hwnd, lParam):
if IsWindowVisible(hwnd):
length = GetWindowTextLength(hwnd)
buff = ctypes.create_unicode_buffer(length + 1)
GetWindowText(hwnd, buff, length + 1)
if(buff.value == "Choose File to Upload"): #This is the window label
SendMessage(hwnd, 0x0100, 0x09, 0x00000001)
return True
EnumWindows(EnumWindowsProc(foreach_window), 0)
あなたのループ、そしてあなたが選択したものにキーストロークを送信します。第四引数にWM_KEYDOWN(は0x0100)、tab
のvirtual-key code(0x09
)とrepeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag
- ウィンドウhendler(hwnd
)、送信するためにphisicalキー:
SendMessage機能は4つのparamsを取得します。
また、キーアップ、キーダウン、文字、返品などを送信することもできます。 ドキュメントはヘルプを使用してください。
私はリファレンスとしてこれを使用:Win32 Python: Getting all window titles
幸運を!
最初のファイルをクリックする方法も記述できますか?要素名はどうやって取得できますか?ありがとう! – kame
pywinautoパッケージの使用を検討してください。 GUIプログラムを自動化するための非常に自然な構文があります。
コードたとえば、メモ帳でファイルを開きます。 (それはあなたのGUIプログラムで可視ウィンドウのタイトル/コントロールのラベルを使用しています)の構文は、ロケール依存していることに注意してください:
from pywinauto import application
app = application.Application().start_('notepad.exe')
app.Notepad.MenuSelect('File->Open')
# app.[window title].[control name]...
app.Open.Edit.SetText('filename.txt')
app.Open.Open.Click()
答えに[SaveFromFirefox.py example](https://github.com/pywinauto/pywinauto/blob/master/examples/SaveFromFirefox.py)のコードを追加します。 –
[簡単なダイアログとPythonでファイルを選択](http://stackoverflow.comの可能性のある重複/ questions/3579568/python-with-python-with-simple-dialog) –
@Alvin注記を参照してください。 – kame
セレンはあなたを助けません。あなたは[tag:AutoIt]、[tag:Sikuli]、[tag:RobotFramework]について考えましたか? – SiKing