複数のfileをuploadする方法

1,749 views
Skip to first unread message

PEN PEN

unread,
Dec 24, 2019, 5:15:46 AM12/24/19
to 日本Seleniumユーザーコミュニティ
ある要素に単一のファイルをUPLOADする場合はsend_keys(*keys_to_send)を利用してUPLOADできると思いますが、
複数のファイルを同時にUPLOADするにはどうすれば良いでしょうか?

サンプルコードがあれば幸いです。

PEN PEN

unread,
Dec 25, 2019, 1:16:27 AM12/25/19
to 日本Seleniumユーザーコミュニティ
言語はpythonになります。

2019年12月24日火曜日 19時15分46秒 UTC+9 PEN PEN:
ある要素に単一のファイルをUPLOADする場合はsend_keys(*keys_to_send)を利用してUPLOADできると思いますが、
複数のファイルを同時にUPLOADするにはどうすれば良いでしょうか?

サンプルコードがあれば幸いです。

伊藤望

unread,
Dec 25, 2019, 6:20:38 PM12/25/19
to 日本Seleniumユーザーコミュニティ
こんにちは。

send_keys(<ファイルpath1> + " \n " + <ファイルpath2> + ...)

でいけるようです。

PEN PEN

unread,
Dec 27, 2019, 6:31:10 AM12/27/19
to 日本Seleniumユーザーコミュニティ
ご教授ありがとうございます!

また追加で詰まっている箇所があるのですが、教えていただけたら幸いです。

<input type="file" id="excelFile" name="excelFile" class="File_SrhHideBtn" accept=".xls">

element = driver.find_element_by_id("excelFile")
element
.send_keys(xlsPathList[0])



上記のようにHTML内の要素に対してsend_keys()を実行する前に要素を指定している箇所があるのですが、下記のようなエラーになってしまいます。
画面遷移(新規タブでは無い=同一のwindow_handles)してから要素を指定しているので、print(driver.current_url)で画面遷移前後に移動できていることは確認済みです。また直前にsleep(10)を入れたりしましたが、同様のエラーになります。他にどのような原因が考えられるでしょうか?

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="excelFile"]"}
 
(Session info: chrome=79.0.3945.88)



要素を指定できず、UPLOADできるか確認できていない状況です。ちょっとしたヒントでもご教授いただけたら幸いです。


2019年12月26日木曜日 8時20分38秒 UTC+9 伊藤望:

藤田光

unread,
Dec 28, 2019, 8:13:26 AM12/28/19
to 日本Seleniumユーザーコミュニティ
「URLが移動できている = 要素が存在する」ではない可能性はありませんか?
try:
 
WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.ID, 'excelFile')))
except TimeoutException:
 print("タイムアウト")

こんな感じで要素がDOM上に現れるまで待ってみてどうなりますか?
「タイムアウト」は表示されますか?


2019年12月27日金曜日 20時31分10秒 UTC+9 PEN PEN:

PEN PEN

unread,
Dec 29, 2019, 4:06:00 AM12/29/19
to 日本Seleniumユーザーコミュニティ
element = driver.find_element_by_css_selector("input[type=file][name=excelFile]")
element
.send_keys(xlsPathList[0])


上記のようにinputタグを指定するとUPLOADできるようになりました!
ご教授ありがとうございました。


2019年12月28日土曜日 22時13分26秒 UTC+9 藤田光:

伊藤望

unread,
Dec 29, 2019, 4:36:03 AM12/29/19
to 日本Seleniumユーザーコミュニティ
うーん、
別frameの中にある要素なので switch_to_frameコマンドでフレームを切り替える必要がある、などでしょうか。

伊藤望

unread,
Dec 29, 2019, 4:37:15 AM12/29/19
to 日本Seleniumユーザーコミュニティ
あ、解決済みでしたね。失礼しました。
Reply all
Reply to author
Forward
0 new messages