Python+Selenium ファイル選択ボタンにファイルパスをセットする(ファイル選択ダイアログがポップアップする)

Pythonメモ

画面にファイル選択ボタンがあって、ファイルを選択すると横にファイル名が表示される仕組みがあり、ファイルパスはわかっているので、seleniumで自動的にファイルパスをセットしたいのだが上手くいかない。

ファイル選択ダイアログを表示させて、ウィンドウハンドルを取得して切り替えて....
などといろいろテストしていたが上手くいかず泥沼に片足を突っ込んだまま放置していたが、後日以下の方法であっさり解決した。^^

バグ取りで行き詰ったら時間を置くのが得策だよね。
忘れそうなのでここにメモっておきます。


見た目はこんな感じなのだが、ソースを見ると

<td>
<input type="file" name="main_image" size="40">
</td>

こうなっていた。

ボタンコントロールでは上手くいかず、send_keys(filename)でうまくいった。

画像パス = 'c:/sample/photo.jpg'
main_form.find_elements_by_name('main_image')[0].send_keys(画像パス)

# Windows系なら下記でもOK '\'は特殊な意味があるので'\\'とする
# 画像パス = 'c:\\sample\\photo.jpg'
# find_elements_by_name('main_image') はリストなので、[0]としている

お手本通りに書くなら

画像パス = 'c:/sample/photo.jpg'
element = main_form.find_elements_by_name('main_image')
element.send_keys(画像パス)

コメント

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