Selenium+java - 借助autolt完成上传文件操作

前端之家收集整理的这篇文章主要介绍了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>

编写上传脚本

  • 找到解压目录,双击AU3TOOL.exe,打开界面是写脚本用的

  • 双击Au3Info.exe,打开定位工具界面

  • 文件中输入以下代码:注意括号内的参数 ,下一步中会讲如何获取参数

ControlFocus("title1","","Edit1"); 
WinWait("[CLASS:#32770]",10);
ControlSetText("title1","Edit1","文件地址");
Sleep(2000);
ControlClick("title2","Button1");

获取上一步中(前3行代码)中的参数

  • 接下来是,最后一行代码中的title和button1

AutoIt示例脚本

;ControlFocus( "窗口标题",窗口文本",控件ID) 设置输入焦点到指定窗口的某个控件上
ControlFocus(打开"",1)">Edit1)
;WinWait( " [,1)"> [,超时时间]] )  暂停脚本的执行直至指定窗口存在(出现)为止
WinWait(10)
;ControlSetText( 新文本 )   修改指定控件的文本
ControlSetText(C:\Users\ZF\Desktop\zf.png)
;Sleep( 延迟 )   使脚本暂停指定时间段,这里是以毫秒为单位的
Sleep(1000)
;ControlClick( 次数]])   向指定控件发送鼠标点击命令
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的用法,有兴趣的同学可以自行去官网查看了解。

 

原文链接:/selenium/992259.html

猜你在找的Selenium相关文章