Selenium借助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的图标(即图中风扇)到要识别的控件上,控件的唯一标识信息会显示在工具的左侧部分。

       

  附实现文件上传需要的几个方法:

  ControlFocus ( "窗口标题", "窗口文本", 控件ID)   设置输入焦点到指定窗口的某个控件上

  WinWait ( "窗口标题" [, "窗口文本" [, 超时时间]] )  暂停脚本的执行直至指定窗口存在(出现)为止

  ControlSetText ( "窗口标题", "窗口文本", 控件ID, "新文本" )   修改指定控件的文本

  Sleep ( 延迟 )   使脚本暂停指定时间段

  ControlClick ( "窗口标题", "窗口文本", 控件ID [, 按钮] [, 点击次数]] )   向指定控件发送鼠标点击命令

  其中,title即AutoIt Window Info识别出的Title字段,controlID即AutoIt Window Info识别出的Class和Instance的拼接,如上图拼接后的结果应为:Button1

 

        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);
		

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

代补充

感谢参考文章:https://blog.csdn.net/yoyocat915/article/details/81105905

https://blog.csdn.net/wanglha/article/details/44919105

http://www.51testing.com/html/55/n-3707755-2.html

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值