前提・実現したいこと
pythonのseleniumを使ってドラックアンドドロップエリアに画像をアップロードしたいです。
pythonのseleniumを使ってwebブラウザの自動化をしているのですが、
seleniumはHTML5に対応していないのでドラックアンドドロップエリアには画像をアップロードできません。
そこで知恵を貸して欲しくこちらに質問しました。
pythonのseleniumを使ってドラックアンドドロップエリアに画像をアップロードするにはどうしたらいいのでしょうか?
画像をアップロードしたいサイトはヤフーオークションです。
https://auctions.yahoo.co.jp/sell/jp/show/submit?select=non_premium
このページの上部のドラックアンドロップで画像をアップロードする場所に、
pythonのseleniumを使ってローカルにある画像をアップしたいです。
発生している問題・エラーメッセージ
seleniumはHTML5に対応していないのでドラックアンドドロップエリアにはローカルの画像をアップロードできません。
該当のソースコード
python
試したこと
ネットで拾ってきた以下のソースを試しましたがうまくいきませんでした。
javascripでinputを疑似的に作って、そこにローカルの画像をアップロードしていくという方法のようです。
from selenium import webdriver
driver = webdriver.Chrome('./chromedriver')
driver.get('https://free.filesend.to/fileup_free2')
JS_DROP_FILE = "var tgt=arguments[0],e=document.createElement('input');e.type='"+
"file';e.addEventListener('change',function(event){var dataTrans" +
"fer={dropEffect:'',effectAllowed:'all',files:e.files,items:{},t" +
"ypes:[],setData:function(format,data){},getData:function(format" +
"){}};var emit=function(event,target){var evt=document.createEve" +
"nt('Event');evt.initEvent(event,true,false);evt.dataTransfer=da"+
"taTransfer;target.dispatchEvent(evt);};emit('dragenter',tgt);em"+
"it('dragover',tgt);emit('drop',tgt);document.body.removeChild(e"+
");},false);document.body.appendChild(e);return e;"
drop_area = driver.find_element_by_id("fileup")
tmp = driver.execute_script(JS_DROP_FILE, drop_area)
tmp.send_keys('/Users/dai/Desktop/test.png')
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー