我正在尝试登录网页并上传文件。搜索了一会后,我发现了一种使用硒的解决方案。页面的html代码如下所示:
<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文件。另外,由于我是selenium的新手,我试着阅读一些关于它的内容,并发现它是一个软件测试框架。所以我的问题是:这是上传文件的正确方法还是我错过了使用selenium? 如果是这样,是否有更简单/更简单的方式来登录网站并上传文件?
答案 0 :(得分:1)
你应该给HttpClient一个机会。它有很好的文档,并有很多例子。 HttpClient是可扩展OO框架中所有HTTP方法(GET,POST,PUT,DELETE,HEAD,OPTIONS和TRACE)的完整实现。许多身份验证模式已经实现。