こんにちは、しらすです。
SeleniumでWebサイトを操作していたときに、画像ファイルを一括でアップロードしたい!と思い調べました。結果は結構簡単で、アップロードしたいファイルのパスを”\n”でつないでsend_keysするだけでした。
send_keys(<ファイルpath1> + ” \n ” + <ファイルpath2> + …)
以下、フォルダ内の画像ファイルを一度リスト構造で取得した後、join関数を使って”\n”つなぎのテキストに変換しております。
#フォルダ内のjpgファイルを取得しソートする
files = sorted(glob.glob('./*.jpg'))
#一括アップロードように\n区切りとする
files_txt = '\n'.join(files)
#Webエレメントのinputタグに上で作成したアップロード用のテキストを送付
element.find_element_by_tag_name('input').send_keys(files_txt)
ちなみに、アップロードしたファイルの並びがおかしい場合はこちらのページも参照してみてください。ファイル名が数字の場合、1, 10, 11, 12, 2, 3, 4のように、1の次に10が来る場合があります。上記のページでは1,2,3,…,9,10,11と、桁数が違う場合も数字の小さい順で並ぶようにする方法を記載しています。
参考
以下のstack overflowのページを参考にさせていただきました!
Multiple files upload in selenium webdiver
I want to upload 5 files,but my 'file input' is same name/id,how can i possible to upload five files.
My HTML code is:
<div>
<table id="listtable"...
コメント