JavaコードでSeleniumを使用してファイルをアップロードする方法を教えてもらえますか?
アプリケーションのボタンをクリックすると、アップロードウィンドウを選択するために使用できるものが新しいウィンドウで開きます。 Silverlight(C#)によって開発された参照ボタン。
まず、入力要素がvisibleであることを確認してください
マークコリンが議論の中で述べたように ここ :
参照ボタンをクリックしないでください。OSレベルのダイアログボックスがトリガーされ、テストデッドが効果的に停止します。
代わりに使用できます:
driver.findElement(By.id("myUploadElement")).sendKeys("<absolutePathToMyFile>");
myUploadElementはその要素(この場合はボタン)のIDであり、sendKeysでは絶対パスを指定する必要がありますアップロードするコンテンツ(画像、ビデオなど)の。 Seleniumが残りを行います。
アップロードのみが機能することに注意してくださいファイルを送信する要素が<input type="file">
の形式でなければならない場合
driver.findElement(By.id("urid")).sendKeys("drive:\\path\\filename.extension");
これは、アップロードウィンドウから画像をアップロードするために使用するものです。
//open upload window
upload.click();
//put path to your image in a clipboard
StringSelection ss = new StringSelection("C:\\IMG_3827.JPG");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
//imitate mouse events like ENTER, CTRL+C, CTRL+V
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
やった
ファイルパスを入力するテキストボックスがある場合は、sendkeysを使用してファイルパスを入力し、送信ボタンをクリックします。ファイルパスを入力するテキストボックスがなく、参照ボタンをクリックしてWindowsポップアップからファイルを選択できる場合は、AutoItツールを使用できます。以下の手順を参照してAutoItを使用します。
http://www.autoitscript.com/site/autoit/ からAutoitツールをダウンロードしてインストールします
プログラム-> Autoitツール-> SciTE Script Editorを開きます。
Autoitエディターに次のコードを貼り付けて、「filename.exe」として保存します(例:new.exe)
次に、ファイルをコンパイルしてビルドし、exeにします。 (ツール→コンパイル)
Autoitコード:
WinWaitActive("File Upload"); Name of the file upload window (Windows Popup Name: File Upload)
Send("logo.jpg"); File name
Send("{ENTER}")
次に、Autoitツール-> SciTE Script Editorの[ツール]メニューからコンパイルおよびビルドします。
以下のJavaコードをEclipseエディターに貼り付けて保存します
Javaコード:
driver.findElement(By.id("uploadbutton")).click; // open the Upload window using Selenium
Thread.sleep("20000"); // wait for page load
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "C:\\Documents and Settings\\new.exe"); // Give path where the exe is saved.
私は上記のロボットを使用しようとしましたが、遅延を追加する必要があります:
//アップロードウィンドウを開くupload.click();
//put path to your image in a clipboard
StringSelection ss = new StringSelection(file.getAbsoluteFile());
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
//imitate mouse events like ENTER, CTRL+C, CTRL+V
Robot robot = new Robot();
robot.delay(250);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(50);
robot.keyRelease(KeyEvent.VK_ENTER);