文件上传
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);

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

posted on 2023-10-10 16:51  小凡人  阅读(78)  评论(0编辑  收藏  举报