java – 无需浏览器即可自动将文件上传到站点

我在测试脚本上工作,自动文件上传站点并以无头模式执行脚本.它需要逐个上传文件列表,我是基于Selenium WebDriver开发的.我使用AutoIT脚本来处理对话窗口,文件选择器窗口.参数$CmdLine [1]包含实际文件的路径.
ControlFocus("Open a file","","Edit1")
ControlSetText("Open a file","Edit1",$CmdLine[1])
ControlClick("Open a file","Button1")

它使用以下代码执行:

Runtime.getRuntime().exec(autoITExecutable);

它会打开对话框窗口,因此如果不关注浏览器窗口就无法工作. java.awt.Robot类的工作原理类似,它需要关注浏览器窗口.

我也尝试使用sendKeys()方法,但输入字段无法以这种方式处理文件. Katalon Studio也无法处理这个领域.

具有类似形式的示例网站:

http://ajaxuploader.com/demo/simple-upload.aspx

https://ec.europa.eu/cefdigital/DSS/webapp-demo/validation

https://tus.io/demo.html

解决方法

您可以尝试以下代码
// wait for the window to appear
webdriverwait wait = new webdriverwait(driver,10);
wait.until(ExpectedConditions.alertIsPresent());

// switch to the file upload window
Alert alert = driver.switchTo().alert();

// enter the filename
alert.sendKeys(fileName);

// hit enter
Robot r = new Robot();
r.keyPress(KeyEvent.VK_ENTER);
r.keyrelease(KeyEvent.VK_ENTER);

// switch back
driver.switchTo().activeElement();

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...