首页 > 其他分享 >Selenium借助AutoIt完成文件的上传与下载

Selenium借助AutoIt完成文件的上传与下载

时间:2023-10-10 17:02:27浏览次数:33  
标签:文件 Selenium driver robot Send sleep AutoIt 上传

文件上传
1,编辑
首先提前下载好AutoIT,先了解https://blog.csdn.net/weixin_39218743/article/details/87808776

手上没有带上传文件的网址,先用百度的上传照片吧!

打开AutoIT工具组件中的脚本编辑器sciTE Script Editor

WinWaitActive("打开")
Send('D:\img\11.jpg')
Sleep(2000)
Send("{ENTER}")
Send("{ENTER}")

 

注:
a:WinWaitActive("打开")

该命令用于激活通过selenium点击上传按钮打开的Windows窗口

所传的参数为打开的Windows窗口名:“文件上传“,“File Upload”,我这里是“打开”

 

b:Send("文件地址") -> 使用Send命令指定上传的具体文件

Send命令的参数需要是所上传文件的全路径

c:Sleep(2000) -> AutoIT脚本执行暂停2秒

注:单位是毫秒,对于上传文件过大需要一定时间的需要加一个合适的暂停时间
d: Send("{ENTER}")
Send("{ENTER}")
使用Send命令发送键盘回车(Enter)操作,相当于点击Windows窗口中的“打开”按钮

注:如果你的输入法默认是中文的,则需要像上例中一样写两行Send("{ENTER}"),第一行确认你的输入,第二行相当于点击“打开”按钮,如果是英文的输入法,则只需要一行即可。

2.将保存的AutoIT脚本转为化Selenium可以调用的exe文件


3.在Selenium中通过一个简单的语句调用上面的upload.exe文件,把控制权交给了AutoIt
System.setProperty("webdriver.chrome.driver", ".\\tools\\chromedriver.exe");

WebDriver driver=new ChromeDriver();

driver.manage().window().maximize();

driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);

driver.get("https://www.baidu.com/");

driver.findElement(By.xpath("//*[@id=\"form\"]/span[1]/span")).click();
driver.findElement(By.xpath("//*[@id=\"form\"]/div/div[2]/div[2]/input")).click();

Runtime.getRuntime().exec("D:\\upload.exe");

 

 

文件下载
结合Robot,Actions,Js处理

打开此工具AutoIt Window Info,利用此工具来识别Windows控件信息,如输入框、按钮等。用鼠标拖住工具上的Finder Tool的图标(即图中风扇)到要识别的控件上,控件的唯一标识信息会显示在工具的左侧部分。

 

 

 

 

driver.get("https://www.autoitscript.com");

WebElement ele=driver.findElement(By.xpath("//*[@id=\"menu-item-207\"]"));//确定对象,鼠标滑动到此位置
Actions action=new Actions(driver);
action.moveToElement(ele).perform();

driver.findElement(By.xpath("//*[@id=\"menu-item-209\"]")).click();//点击下载链接

WebElement download=driver.findElement(By.xpath("//*[@id=\"post-77\"]/div/table[2]/tbody/tr[1]/td[2]/a/img"));

JavascriptExecutor js=(JavascriptExecutor)driver;
js.executeScript("arguments[0].scrollIntoView(true);", download);
action.moveToElement(download).contextClick().build().perform();

Robot robot=new Robot();
robot.keyPress(KeyEvent.VK_DOWN);

Thread.sleep(1000);

robot.keyPress(KeyEvent.VK_DOWN);

Thread.sleep(1000);

robot.keyPress(KeyEvent.VK_DOWN);

Thread.sleep(1000);

robot.keyPress(KeyEvent.VK_DOWN);

Thread.sleep(1000);

robot.keyRelease(KeyEvent.VK_DOWN);
Thread.sleep(1000);

robot.keyPress(KeyEvent.VK_ENTER);

File srcLoad=new File("d:\\1.png");
File scrFile= ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try {
FileUtils.copyFile(scrFile, srcLoad);
}catch(IOException e) {
System.out.print("can't save");
e.printStackTrace();
}finally {
System.out.print("finished");
}


Runtime.getRuntime().exec("D:\\upload.exe");

Thread.sleep(2000);

效果图如下(相类似,自己没录制)

标签:文件,Selenium,driver,robot,Send,sleep,AutoIt,上传
From: https://www.cnblogs.com/qiuqq/p/17755133.html

相关文章

  • 总结selenium 中 js 更改隐藏属性
    第一种多个元素被隐藏时通过js修改对比照片这个是没隐藏的 对比照片 这个是隐藏的 driver=webdriver.Chrome()#urlurl=r"http://127.0.0.1:5000/"driver.get(url)print("已打开网页")#执行js脚本,将元素的display属性设置为block,......
  • 前端大文件上传方法
    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表格数据、上传影音文件等。如果文件体积比较大,或者网络条件不好时,上传的时间会......
  • vue实现视频上传功能
    本文实例为大家分享了vue实现视频上传功能的具体代码,供大家参考,具体内容如下环境:vue+TS上传视频+上传到阿里云主要处理前端在vue下上传视频使用的是阿里云的视频点播服务1、需要后台去申请一个开发API,请求阿里云的接口访问控制2、有了开发视频的token,供给前端3、前端去请......
  • vue上传视频插件
    视频作为一种信息表达方式,越来越受到人们的关注和喜爱。近年来,随着移动互联网的普及,手机、平板电脑等设备可以随时随地观看视频。在开发网站或移动应用时,上传和展示视频成为一项不可或缺的功能。Vue作为一种现代化JavaScript框架,提供了丰富的开发工具和插件,其中视频上传插件是Vue......
  • vue 基于 el-upload 封装视频上传组件
    新建video-upload.vue文件:<template> <divclass="video-upload-com">  <el-upload:action="uploadUrl":before-upload="beforeAvatarUpload":file-list="mediaList":on-success="handleSuccess":o......
  • js文件分片上传
    写在前面今天我们写一下关于js的分片上传,因为工作中很多时候上传文件是比较大的,为了不让卡死,我们可以使用分片上传的方式进行文件的传输,下面就简单的将思路梳理一下,然后贴上代码思路分析既然是分片上传,那么首先要知道不分片的时候是怎么上传的,我们一般是直接使用file文件然后将其......
  • httpclient上传图片(multipart/form-data)
    stringboundary=string.Format("----WebKitFormBoundary{0}",DateTime.Now.Ticks.ToString("x"));MultipartFormDataContentcontent=newMultipartFormDataContent(boundary);content.Headers.ContentType=Me......
  • js实现分片上传
    代码贴过来就能用<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="viewport......
  • 泛微OA e-office平台uploadify.php任意文件上传漏洞
    0x01漏洞描述泛微e-office系统是标准、易用、快速部署上线的专业协同OA软件,国内协同OA办公领域领导品牌,致力于为企业用户提供专业OA办公系统、移动OA应用等协同OA整体解决方案。泛微OAe-office平台uploadify.php处存在任意文件上传漏洞,攻击者通过漏洞可以获取服务器权限。 ......
  • js实现文件分片上传
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>文件分片上传</title></head&......