2017-01-24 10 views
0

ローカルファイル(C:\ sample.txt)を自分のサーバーにアップロードしようとしています。私はこれをChromeウェブドライバで実装しようとしました。 しかし、HTMLUnitDriverで同じものを実装する際に、ローカルディスクからファイルアイテムを参照できませんでした。私はその後、私は閲覧するファイルの項目を必要とするSelenium HtmlUnitDriver-headless webdriverを使用したファイルアップロード

 WebElement browseFile = fluentWait(By.id("browseFile"), driver); 
     browseFile.click(); 
     File file = new File("C:\\UploadSample1.txt"); 
     driver.switchTo().activeElement(); 
     StringSelection fileNameToWrite = new StringSelection(
       file.getAbsolutePath()); 
     Toolkit.getDefaultToolkit().getSystemClipboard() 
       .setContents(fileNameToWrite, null); 
     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); 

:ロボットを用い

 WebElement inputFile = driver.findElement(By.id("file")); 
     System.out.println(driver.getCurrentUrl()); 
     LocalFileDetector detector = new LocalFileDetector(); 
     String path = "C:\\UploadSample1.txt"; 
     File f = detector.getLocalFile(path); 
     inputFile.sendKeys(f.getAbsolutePath()); 

2):私は、キーを送る)、同様に二つの方法を下回る

1を試してみましたそれを私のサーバに保存することができます。ファイルパスを送信するだけで、サーバーディスク内のファイルが検索されるためです。今私は本当に立ち往生し、さらに動くことができませんでした。

ご協力いただきまして誠にありがとうございます。ありがとうございました!

答えて

0

ファイルを最初にブラウズする必要がある場合は、IMHOできません。そのためにはAutoITが必要です(Robotクラスは推奨されていません)。だからあなたの最善の策はsendKeysを使ってファイルパスを送ることです。

+0

おかげKushalのお返事。実際に私はsendKeysを使用してファイルパスを渡そうとしましたが、サーバー上では、実際に私のローカルではなく、サーバーシステムでファイルを探しています。あなたはそのための任意の回避策をお勧めしますか? – Diya

0

formInput.setValueAttribute(formValue);私にとってうまくいきました。

コードスニペット:

Iterator<String> formValueIterator = formValues.keySet().iterator(); 
while(formValueIterator.hasNext()){ 
    String formKey = formValueIterator.next(); 
    String formValue = formValues.get(formKey); 

    HtmlInput formInput = form.getInputByName(formKey); 

    if (formInput != null) 
     if (formInput instanceof HtmlPasswordInput) { 
      ((HtmlPasswordInput)formInput).setValueAttribute(formValue); 
     } else { 
      formInput.setValueAttribute(formValue); 
     } 

} 
+0

コードのみの回答は将来の読者のために多くの情報を提供していないので奨励されていません – WhatsThePoint

関連する問題