質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

WSH

WSH(Windows Script Host)とは、Windows上でテキストファイルに記述したJavaScriptやVBScriptなどのスクリプトを実行するホスト環境のことです。COMを通じたレジストリ操作やWMIへのアクセスが可能で、複雑な処理も行うことができます。

Q&A

解決済

1回答

820閲覧

java.awt.Robotクラスを用いずIE11からseleniumでファイルをダウンロードしたい。

reraNine

総合スコア124

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

WSH

WSH(Windows Script Host)とは、Windows上でテキストファイルに記述したJavaScriptやVBScriptなどのスクリプトを実行するホスト環境のことです。COMを通じたレジストリ操作やWMIへのアクセスが可能で、複雑な処理も行うことができます。

0グッド

1クリップ

投稿2018/05/29 08:34

編集2018/05/30 04:09

前提・実現したいこと

javaとseleniumを用いて
特定サイト(IE限定)にアクセスし、
ファイルをダウンロードする処理を
java.awt.Robotクラスを用いず実装したい。
(正確にはPCロック等のアクティブ状態に関わらずダウンロードしたい)

よろしくお願い致します。

発生している問題・エラーメッセージ

IEのダウンロードは通知バーが発生する為、java.awt.Robotを用いて実装しました。
しかし、Robotクラスは、アクティブウィンドウにキーを送信する方式ですので
例)
├エクスプローラやeclipse等別のプログラムを起動していた
└PCをロックしていた
上記のタイミングの際に、Robotクラスを用いてキーを送信すると
IE上でボタンを押せていない為、ファイルダウンロードが上手くいきません。
サーバー上で定期実行したい為、現状のプログラムでは実装不可能です。

考察

1.アクティブ状態に関わらずにダウンロードする機能をjavaで実装する。
2.IEダウンロード時の通知バー発生を表示させなくする。

上記2種のどちらかが実装できればと思うのですが。。

【追記】
編集・追記依頼より、
vbs, wshを利用すれば。。との情報を提供いただきました。ありがとうございます。
タグにVBScript WSHを追加させていただきました。

構想としては、
1.java selenium------------------------------------------------

java

1File df = new File("ダウンロード先ファイルディレクトリ"); 2//ボタンの要素を発見し、押下。ダウンロードを実行する。 3WebElement element; 4element = driver.findElement(By.XX("ボタンの要素")); 5element.sendKeys(Keys.chord(Keys.ENTER)); 6//5秒単位でダウンロードファイルの確認をする。200秒程度を上限で 7//ファイルを発見次第繰り返し処理を終了する。 8for (int i = 0; i < 40; i++) { 9 Thread.sleep(5000); 10 if (df.exists()) { 11 break; 12 } else { 13 /** 14 * ★ここでvbs, wshを 15 * ディレクトリ指定で起動する...? 16 **/ 17 } 18} 19

2.vbs wsh ------------------------------------------------------

VBScript

1//記載方が違うと思いますがご容赦下さい。 2★IEの通知バーを検出する。 3if(見つからなかった) { 4 //java側でループ出来るので、処理終了しても良し。 5 //...本当は何度も起動するケースを想定し、こちらで判定すべき? 6else Then //見つかった 7 ファイルのダウンロードボタンを押下する。 8 //ファイル自体の容量により時間がバラバラだと思うので、 9 //待ち時間制御を実装できれば.. 10 //1.出来る場合 11 while(「ダウンロードが完了しました」の通知バーを検出する) { 12 if(見つかった) { 13    vbs wsh側の処理を終了する。 14 } 15 } 16 //2.出来ない場合 17 //返却値 true等1等返し、java側で受け取り、 18 //vbs起動判定条件を追加する 19 // return true; 20]

上記の★に該当する
呼び出し方及び、IE通知バー取得に関する記載が実装できればと思います。
申し訳ないのですが、vbs wshの知識が皆無である為、
見当違いな事を構想しているのかもしれません。

このurlが参考になる等の情報がございましたら、ご教授の程
よろしくお願い致します。

参考資料

IEダウンロードの際、参考にさせていただいた記事
http://rabitarochan.hatenablog.com/entry/2017/11/30/130604

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/29 09:50

つ vbs
退会済みユーザー

退会済みユーザー

2018/05/29 09:51

つ wsh
reraNine

2018/05/30 00:42

情報提供ありがとうございます。上記に関する知識0ですので、、調べます。進展がありましたら追記させていただきます。
guest

回答1

0

自己解決

java側からruntimeで
VBAを起動し、IEの識別番号を特定。
ダウンロードポップアップのオブジェクトを取得し、ボタン押下のアクションを起こす事で解決しました。
https://www.ka-net.org/blog/?p=4855

サーバにOfficeを入れる事が可能であった為の方法ですが、
あまり使いたくない為、いつかこちらの方法を用いず作成できればと思いつつクローズします。

投稿2018/08/09 05:13

reraNine

総合スコア124

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問