J'essaie de me connecter à une page Web et de télécharger un fichier. Après avoir cherché un moment, j'ai trouvé une solution qui utilise du sélénium. Le code HTML de la page ressemble à ceci:Téléchargement d'un fichier sur un site php en utilisant java
<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>
et le code java utilisé pour connecter la page et télécharger mon fichier:
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();
}
}
Pour faire ce travail que je devais télécharger le geckodriver .exe et ajoutez 3 fichiers jar externes. De plus, comme je suis nouveau au sélénium, j'ai essayé de lire quelque chose à ce sujet et j'ai découvert qu'il s'agit d'un cadre de test logiciel. Donc, ma question est la suivante: est-ce une bonne façon de télécharger des fichiers ou est-ce que je me trompe de sélénium? Si oui, existe-t-il un moyen plus simple/plus simple de se connecter à un site Web et de télécharger un fichier?