2017-10-16 108 views
0

我正在嘗試登錄網頁並上傳文件。搜索了一段時間後,我發現了一個使用硒的解決方案。在頁面的HTML代碼如下所示:使用java將文件上傳到php網站

<html> 
    <head><title>some title</title></head> 
    <body> 
    <h1>upload</h1> 
     upload your file<br> 
     <form action="hx2.php" method="post" enctype="multipart/form-data"> 
      <input type="hidden" name="action" value="upload"> 
      <input type="hidden" name="debug" value=""> 
      <input type="file" name="filename"> 
      <input type="submit" value="Datei senden"> 
      <input type="reset"> 
     </form> 
     </body> 
</html> 

和用於登錄頁面,上傳我的文件中的Java代碼:

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class Example_1 { 
    public static final String BASEURL = "somesite.de/"; 
    private static WebDriver driver; 
    public static void main(String[] args) { 
     String geckoPath = "C:\\...\\gecko\\geckodriver.exe"; 
     System.setProperty("webdriver.gecko.driver",geckoPath); 
     driver = new FirefoxDriver(); 
     loginAndUpload("uname", "pwd","C:\\...\\myFile.xml");   
    } 
    public static void loginAndUpload(String uname, String pwd, String filePath){ 
     String URL = "http://" + uname + ":" + pwd + "@" + BASEURL; 
     driver.get(URL); 

     driver.findElement(By.name("filename")).sendKeys(filePath); 

     driver.findElement(By.cssSelector("input[type=submit]")).click(); 
     driver.findElement(By.name("tan")).sendKeys("123"); 

     driver.findElement(By.cssSelector("input[type=submit]")).click(); 

     System.out.println(driver.getPageSource().contains("successful")?"successfully uploaded":"upload not successful"); 
     driver.quit(); 
    } 
} 

爲了使這項工作,我需要下載geckodriver .exe並添加3個外部jar文件。此外,由於我是硒新手,我試着讀一些關於它的知識,並發現它是一個軟件測試框架。所以我的問題是:這是一個正確的方式來上傳文件或我想念硒? 如果是這樣,是否有更簡單/更簡單的方式登錄網站並上傳文件?

回答

1

您應該給HttpClient一個機會。這是有據可查的,並有很多例子。 HttpClient是在可擴展OO框架中的所有HTTP方法(GET,POST,PUT,DELETE,HEAD,OPTIONS和TRACE)的完整實現。許多認證模式已經實現。