zoukankan      html  css  js  c++  java
  • selenium 用autoIT上传下载文件

    一、下载安装AutoIT

    • 下载并安装AutoIT,下载链接:https://www.autoitscript.com/site/autoit/
    • AutoIT安装成功后,可以在开始菜单下看到AutoIT的所有工具,如下图所示: 
    • 其中分为几类,AutoIT Window Info用来识别Windows控件,根据识别的控件信息编写脚本;Complie Script to .exe,用来将利用AutoIt编写的脚本,编译成可执行文件;Run Script 用来执行AutoIT的脚本信息;SciTE Script Editor用来编写AutoIt脚本。

    接下来就是利用以上四种工具,来编写AutoIT脚本,然后编译成可执行文件

    二、利用AutoIT编写脚本

    • (1)  AutoIt Window Info 

           打开此工具,利用此工具来识别Windows控件信息,如输入框、按钮等。

          此工具打开的界面显示:

         用鼠标拖住工具上的Finder Tool的图标(即图中蓝色圈圈部分)到要识别的控件上,控件的唯一标识信息会显示在工具的左侧部分(图中红框标出的部分)。

        从显示的结果得知,此控件的Title=“打开”,Class为Button,Instance=1。我们就是利用控件的这些信息,定位控件,编写脚本。

    • (2) SciTE Script Editor

         根据以上所识别的空间信息,利用此编辑器,利用此软件根据AutoIT的语法编写脚本。

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

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

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

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

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

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

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

        实例:

            

    文本编辑

    ControlFocus("文件上传", "", "Edit1")
    WinWait("[CLASS:#32770]", "", 10)
    ControlSetText("文件上传" ,"", "Edit1", "E:1.jpg")
    Sleep(2000)
    ControlClick("文件上传", "","Button1");

        AutoIT脚本编写完成后,可以通过菜单栏“Tools”-->“Go” 运行一下脚本。注意,运行的时候,上传窗口需处于打开状态。

    三、AutoIT脚本编译成可执行文件

         脚本编辑运行无误后,将其保存。然后打开Complie Script to .exe工具,将保存的脚本编译成exe可执行文件。

         

        点击“Browse”选择保存的脚本文件,点击“Convert”将其生成exe文件。

        至此,利用AutoIT实现图片上传的流程结束。

    四. 然后添加到自动化脚本中:

    driver.find_element_by_css_selector('.file-input-wrapper.btn.btn-default').click()
    os.system('"d:/upfile.exe"')

     五、autoit参数化

    在传递命令行参数到AutoIt脚本中的时候,AutoIt会自动初始化一个特殊的数组 $CmdLine。
        下面这些可以在AutoIt脚本中直接使用:
        $CmdLine[0] ;参数的数量
        $CmdLine[1] ;第一个参数 (脚本名称后面)
        $CmdLine[2] ;第二个参数

    所以,将代码改成:

    ControlFocus("文件上传","","Edit1");
    WinWait("[CLASS:#32770]","",5);
    ControlSetText("文件上传","","Edit1",$CmdLine[0]);
    Sleep(2000);
    Send("{ENTER}")
    Sleep(2000);
    

      

    (2)自动化代码改成:

     Runtime.getRuntime().exe("d:/upfile.exe  file" );

    os.system('"d:/upfile.exe file"')
    

      

  • 相关阅读:
    黄聪:WordPress动作钩子函数add_action()、do_action()源码解析
    黄聪:使用WORDPRESS自带AJAX方法
    黄聪:get_posts 函数 | wordpress
    黄聪:wordpress伪静态的原理
    黄聪:wordpress如何开启文章格式post format
    黄聪:Xmind修改默认字体风格设置
    黄聪:让WordPress主题支持语言本地化(使用poedit软件实现中文翻译功能)
    ArcGIS Pro二次开发-选择gdb
    arcgis pro2.5 改变地图范围
    创建用户SQL
  • 原文地址:https://www.cnblogs.com/royfans/p/9304761.html
Copyright © 2011-2022 走看看