Python + Selenium でfileupload

Python + Selenium でfileupload しないといけないことがあったので、調べたのですが、日本語だと古い記事しか見つからなかったので、メモ。

開発環境 MacOS Catalina, Python3

XPath でファイルアップロードのinput 属性を指定して、send_keys でファイルパスを渡せばよい。

# アップロードするファイルパス
uploadfile = './file/uploadfile.pdf'
# ファイルアップロード
driver.find_element_by_xpath('//input[@type="file"]').send_keys(uploadfile)

# ファイルアップロード をクリック
driver.find_element_by_xpath('//*[@id="btn_upload"]/').click()

これが

これが
こうなって
こうなって

あとは、ファイルアップロードボタンをクリック(最後の行)すればupload できます。