私は、ステップの1つがDropzone.jsを介してファイルをアップロードすることであるSeleniumテストケースを作成しています。プログラムによってDropzone経由でファイルをアップロード/追加します。 by Selenium
(あまりにも細かされることをJavaScriptでプログラム的に行うことができますので、もしセレンは、ブラウザでJavaScriptを実行することができたよう。)
私は、ファイルブラウザウィンドウを開いてシミュレートするためにすべての道を行く避けたいです、ファイルの選択などは、Webドライバが処理できるものの外にあり、非常に複雑になります。擬似コードでは、私はこのような何かをしたいと思います:
1. Select some Dropzone element 2. Set file path 3. Submit (upload the file)
「DZ-隠さ入力」要素を使用して、既存の質問(Unable to upload file using python selenium webdriver on http://www.dropzonejs.com)、に記載された1つの可能性の高いアプローチがあります(A DOMファイル入力)。
残念ながら、少なくともDropzoneの現在のバージョンでは動作しません。ファイルを要素に設定すると、Dropzone .filesはまだ空であり、アップロードは行われません。
1. Set file path in the "dz-hidden-input" element 2. Use javascript to retrieve the File object from the element 3. Pass the file to dropzone.addFile(file)
をしかし、私の懸念は、それが隠された入力との両方として、本当にハックです:
ドロップゾーンのソースで見た後、私は上記を拡張することで、実用的なソリューションを思い付きました。 addFileは文書化されておらず、Dropzoneが実装などを変更すると、テストは将来中断されます。
これを行う方法はありますか?
(明確にするために - 私はドロップゾーンFAQに述べたように、既存のファイルを表示しないように、新しいファイルをアップロードしようとしています)入力ボタンに
私たちはサーバー側のSOAPリクエストを介して、セレンを介したUIオートメーションとして、クリックして入力ボタン - > Webドライバのクリップボードを使用する/ Javaロボット - >貼り付け/ファイルの場所を入力する+ファイル名>ロボットを押してください。私は申し訳ありませんが、私はdropzone jsアイデアのアイデアはありませんが、これらはあなたがプログラマチックにjavascriptレベルのアップロードをしたいもの以外の2つの方法です。 –
ありがとう、はい私はJavaロボットを使用して、あなたが言及したようにGUIアクションをシミュレートするようにしました(可能ならそのルートに行く必要はありませんが...)。参考までに、私はいくつかのサンプルコードを見つけました:http://sqa.stackexchange.com/questions/12851/how-can-i-work-with-file-uploads-during-a-webdriver-test私はいくつかのThread.sleepをアクションの間に挿入しなければなりませんでした。 (また、Dropzoneは通常のファイル入力要素ではありませんが、それをIDで見つけてからクリックすると、ファイルブラウザウィンドウが開きます)。 –
はい、十分な数を追加する必要があります。それはファイルエクスプローラとやりとりし、開くために時間がかかり、アップロード後にファイルサイズに応じて必要なスリープが必要になるためです。答えとして追加... –