Selenium+java - 借助autolt完成上传文件操作
写在前面:上传文件是每个自动化测试同学会遇到,而且可以说是面试必考的问题,标准控件我们一般用sendkeys()就能完成上传,但是我们的测试网站的上传控件一般为自己封装的,用传统的上传已经不好用了,也就是说用selenium的APi已经无法完成上传操作了,这时我们就要借用第三方工具Autolt来完成上传文件的操作。 准备工作1、下载autolt 官网:https://www.autoitscript.com/site/autoit/downloads/,请自行下载 也可以百度下载绿色版,免安装,笔者就是绿色版,下面案例都以绿色版进行讲解 附百度网盘:链接: https://pan.baidu.com/s/1szmGK7wudsXKkH5xkEOnOQ 提取码: dysb? 2、下载后解压到指定目录 3、被测网页HTML代码如下 <html> headmeta http-equiv="content-type" content="text/html;charset=utf-8" /> title>上传文件演示案例</body> div class="row-fluid"> ="span6 well"h3>upload File> input id="upload" type="file" name="file" /> div> 编写上传脚本
ControlFocus("title1","","Edit1");? WinWait("[CLASS:#32770]",10); ControlSetText("title1","Edit1","文件地址"); Sleep(2000); ControlClick("title2","Button1"); 获取上一步中(前3行代码)中的参数
AutoIt示例脚本;ControlFocus( "窗口标题",窗口文本",控件ID) 设置输入焦点到指定窗口的某个控件上 ControlFocus(打开"",1)">Edit1) ;WinWait( " [,1)"> [,超时时间]] ) 暂停脚本的执行直至指定窗口存在(出现)为止 WinWait(10) ;ControlSetText( 新文本 ) 修改指定控件的文本 ControlSetText(C:UsersZFDesktopzf.png) ;Sleep( 延迟 ) 使脚本暂停指定时间段,这里是以毫秒为单位的 Sleep(1000) ;ControlClick( Button1) ? 生成可执行程序?选择工具-->编译脚本 生成可执行文件如下: 自动化测试脚本调用upload.exe完成上传具体代码如下: import org.openqa.selenium.By; org.openqa.selenium.WebDriver; org.openqa.selenium.chrome.ChromeDriver; org.testng.annotations.AfterClass; org.testng.annotations.BeforeClass; org.testng.annotations.Test; java.io.IOException; /** * @author rongrong * 上传文件演示案例 */ public TestUpload { WebDriver driver; @BeforeClass void beforeClass() { System.setProperty("webdriver.chrome.driver","driver/chromedriver.exe"); driver = new ChromeDriver(); } @Test testUpload() { driver.get("file:///C:/Users/Administrator/Desktop/index.html"); driver.manage().window().maximize(); //选择文件 driver.findElement(By.id("upload")).click(); try { Runtime.getRuntime().exec("upload.exe"); } catch (IOException e) { e.printStackTrace(); } } @AfterClass afterClass() { driver.quit(); } } 效果如下: ? 到此使用自动化调用autolt上传文件的案例演示结束,可能很多同学会纠结autolt语法不会写啥的,大可不必纠结,基本写完是一劳永逸的,不会在维护了,更多autolt的用法,有兴趣的同学可以自行去官网查看了解。 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |