• Selenium+java


    写在前面:

    上传文件是每个自动化测试同学会遇到,而且可以说是面试必考的问题,标准控件我们一般用sendkeys()就能完成上传,但是我们的测试网站的上传控件一般为自己封装的,用传统的上传已经不好用了,也就是说用selenium的APi已经无法完成上传操作了,这时我们就要借用第三方工具Autolt来完成上传文件的操作。

    准备工作

    1、下载autolt

    官网:https://www.autoitscript.com/site/autoit/downloads/,请自行下载

    也可以百度下载绿色版,免安装,笔者就是绿色版,下面案例都以绿色版进行讲解

    附百度网盘:链接: https://pan.baidu.com/s/1szmGK7wudsXKkH5xkEOnOQ 提取码: dysb 

    2、下载后解压到指定目录

    3、被测网页HTML代码如下

    <html>
    <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title>上传文件演示案例</title>
    </head>
    <body>
      <div class="row-fluid">
        <div class="span6 well">
        <h3>upload File</h3>
          <input id="upload" type="file" name="file" />
        </div>
      </div>
    </body>
    </html>

    编写上传脚本

    • 找到解压目录,双击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("打开","","Edit1")
    ;WinWait( "窗口标题" [, "窗口文本" [, 超时时间]] )  暂停脚本的执行直至指定窗口存在(出现)为止
    WinWait("打开","",10)
    ;ControlSetText( "窗口标题", "窗口文本", 控件ID, "新文本" )   修改指定控件的文本
    ControlSetText("打开","","Edit1","C:UsersFDesktopzf.png")
    ;Sleep( 延迟 )   使脚本暂停指定时间段,这里是以毫秒为单位的
    Sleep(1000)
    ;ControlClick( "窗口标题", "窗口文本", 控件ID [, 按钮] [, 点击次数]])   向指定控件发送鼠标点击命令
    ControlClick("打开","","Button1")

    生成可执行程序

     选择工具-->编译脚本

    生成可执行文件如下:

    自动化测试脚本调用upload.exe完成上传

    具体代码如下:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.testng.annotations.AfterClass;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.Test;
    
    import java.io.IOException;
    
    /**
     * @author rongrong
     * 上传文件演示案例
     */
    public class TestUpload {
        WebDriver driver;
    
        @BeforeClass
        public void beforeClass() {
            System.setProperty("webdriver.chrome.driver", "driver/chromedriver.exe");
            driver = new ChromeDriver();
        }
    
        @Test
        public void 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
        public void afterClass() {
            driver.quit();
        }
    
    }

    效果如下:

    到此使用自动化调用autolt上传文件的案例演示结束,可能很多同学会纠结autolt语法不会写啥的,大可不必纠结,基本写完是一劳永逸的,不会在维护了,更多autolt的用法,有兴趣的同学可以自行去官网查看了解。

  • 相关阅读:
    【Python基础编程036 ● 容器 : 字符串、列表、元组、字典 ● 定义字符串的格式】
    【Python基础编程035 ● 判断语句和循环语句 ● for循环语句】
    【Python基础编程034 ● 判断语句和循环语句 ● while循环实现猜拳游戏】
    【Python基础编程033 ● 判断语句和循环语句 ● 转义字符】
    【Python基础编程032 ● 判断语句和循环语句 ● 循环嵌套中的break和continue的使用 】
    【Python基础编程031 ● 判断语句和循环语句 ● whie循环练习-打印三角形 】
    【Python基础编程030 ● 判断语句和循环语句 ● while循环练习-打印正方形 】
    (14)python网络编程,多线程socket(待写)
    【IO压测】sql server使用Diskspd测试SQL Server IO存储
    sql server使用T-SQL读取扩展事件
  • 原文地址:https://www.cnblogs.com/longronglang/p/11312140.html
Copyright © 2020-2023  润新知