2016-09-12 1 views
1

私はアップロードするテキストファイルに何かをするエンジンと通信するウェブクライアントをテストしています。基本的には、アップロードするファイルを選択します。このファイルがアップロードされると、私はstartを押すことができ、エンジンはそのことを行い、結果を返します。私はPythonでセレンを使ってフロントエンドをテストしようとしています。このWebクライアントは、zipまたはtxtファイルを受け入れます。このWebクライアントの開発者は、zipやテキスト以外のファイルの種類がアップロードされたとき、それはここではそうセレンのpythonで認識されないファイルタイプ

File type "audio/wav" is not supported: Must be one of "text/plain", "application/zip", "application/zip-compressed", "application/x-zip-compressed". 

のようなエラーを与えるだろう、それはように作られた、私はWAVオーディオファイルをアップロードしようとしました。 zipファイルを手動でアップロードしようとすると、期待どおりに動作します。しかし、私はセレンで同じファイルを使用して、この同じプロセスをしようとすると、それはもはや、ファイルの種類を認識し、私は、このエラーが発生します

File type "" is not supported: Must be one of "text/plain", "application/zip", "application/zip-compressed", "application/x-zip-compressed". 

ので、ファイルの種類が認識されないです。ここで私は、ファイルをアップロードするために使用していますものです:

choose = self.driver.find_element_by_id("chooseButton") 
time.sleep(1) 
#clicks to open upload window 
choose.click() 
time.sleep(1) 
#ZIp file with other zips 
pyautogui.typewrite("C:\\Transcriber\\Framework\\test\\audio\\Nested.zip") 
time.sleep(1) 
pyautogui.press('enter') 

私は、アップロードボタンをクリックしたときにポップアップするので、私は私のキーボードを自動化していたかのように、それはだ、アップロードウィンドウを操作するためpyautoguiを使用しています。 time.sleepは、次のアクションが開始される前にアクションが終了するようなアクション間に十分な時間が与えられるようにしています。

マイジップは、通常のzipファイルです。セレンで実行すると、上記のエラーが出ました。誰もが問題が何であるか知っていますか?これはPythonの問題ですか?前もって感謝します。

編集:この問題は、テストケース内のzipファイルをtxtファイルに置き換えると、zipファイルをアップロードしようとしたときにのみ発生します。

Edit2:テストケースが終了した後、ブラウザを開いたままにしておくと、手動でアップロードしようとしてもエラーが発生します。これは、セレンによって生成されたブラウザインスタンスでのみ発生するようです。それ以外の場合は、私自身で新しいブラウザを開くと、zipをアップロードしても問題ありません。

+0

アップロードするファイルを選択すると、あなたはマウスで選択するか、またはあなたがパスを入力しますか? pyautoguiのように入力してEnterキーを押すとどうなりますか?おそらく名前がピックアップされておらず、空のファイル名をアップローダに渡そうとしているため、「ファイルタイプ」は「サポートされていません」というエラーです。 – tarikki

+0

上記の私のコードでは、pyautoguiを使用して、アップロードウィンドウがポップアップするときに制御がなくなるため、手動でキーを入力する必要があります。テストを監視するときにパスが完了していることがわかります。これは、Enterキーを押す前に印刷が完了したことを確認するために1秒間の一時停止があるためです。私は手動テストで正確な経路を試して、それが動作します。もちろん私の手動テストでは、二重バックスラッシュを取り除かなければならなかった。 – Ted

答えて

0

Python + seleniumには、ファイルを直接アップロードするオプションもあります。

"choose"要素に完全なhtmlがないため、これが本当かどうかはわかりません。

は、私の場合は、入力の要素[タイプ=ファイル]を持っていたし、これが働いた:。

driver.find_element_by_css_selector( '入力[タイプ= "ファイル"]')send_keys(パス+ファイル名)

場合によっては、状況に応じて後で[OK /送信]ボタンをクリックする必要があります。

希望すると便利です。ここで例えば、この程度

さらに詳しい情報:How to upload file (picture) with selenium, python

+0

'

Drag orchoose WAV/JSON files here.
これが役立つかどうかわかりませんが、あなたの方法を試してみましたが、私の場合はうまくいかないようです – Ted

+0

動作に違いはありましたか?それとも同じメッセージを出しましたか?この情報をありがとう。それは私が好きなだけ私を助けてくれるわけではないので、他の誰かが多分もっと知りたいと思っています!しかし:要素#filesを使用して私の提案を試しましたか? – Chai

+0

私は以前にsendKeysを試してみましたが、後でそれをクリックしなければならないことを知らなかったが、それは後でそれを押しても何も起こりません。アップロードウィンドウはまだポップアップします。それは私がpyautoguiを "手動で"パスに入力してenterを押すことに頼らざるを得なかった主な理由です。奇妙なことは(おそらく私の質問でも言及すべきです)、それは正常なテキストファイルをアップロードするときにうまくいくように思われるので、同じテストケースで、zipファイルをtxtファイルに変更すると、いいえ問題を取得 – Ted

関連する問題