Selenium系列教程 - AutoIt命令行参数

2023-10-30


Selenium对网页进行UI自动化时经常会遇到Windows弹框,比如上传、下载框,对于这种弹框,Selenium无法处理,我们常常会选择AutoIt这个工具。

一、AutoIt下载安装

AutoIt目前最新是v3版本,这是一个使用类似BASIC​​脚本语言​​的​ 免费软件​​,它设计用于Windows GUI(​​图形用户界面​​)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。
下载链接
在这里插入图片描述
选择安装路径即可,其他默认安装。安装后在程序中可以找到这些应用。
在这里插入图片描述

AutoIt Windows Info       用于帮助我们识Windows控件信息。
Compile Script to.exe     用于将AutoIt生成 exe 执行文件。
Run Script                用于执行AutoIt脚本。
SciTE Script Editor       用于编写AutoIt脚本。

二、AutoIt使用

以操作文件上传弹出的窗口为例讲解AutoIt实现上传过程。

1、识别控件

首先打开AutoIt Windows Info 工具,鼠标点击Finder Tool,鼠标将变成一个小风扇形状的图标,按住鼠标左键拖动到需要识别的控件上。
在这里插入图片描述
在这里插入图片描述
通过AutoIt Windows Info 获得以下信息。
窗口的title为“打开”,标题的Class为“#32770”。
文件名输入框的class 为“Edit”,Instance为“1” ,所以ClassnameNN为“Edit1”。
打开按钮的class 为“Button”,Instance为“1” ,所以ClassnameNN为“Button1”。

2、编写脚本

根据AutoIt Windows Info 所识别到的控件信息打开SciTE Script Editor编辑器,编写脚本。

;该脚本的写法是 ';'是注释会注释后面的内容,所以单行结尾加不加';'都可以
    ;ControlFocus ( "title", "窗口文本", controlID)   设置输入焦点到指定窗口的某个控件上;
    ;WinWait ( "title题" , "窗口文本" , 超时时间 )     暂停脚本的执行直至指定窗口存在(出现)为止;
    ;ControlSetText ( "title", "窗口文本", controlID, "新文本" )    修改指定控件的文本;
    ;Sleep ( 延迟 )   使脚本暂停指定时间段;
    ;ControlClick ( "title", "窗口文本", 控件ID , 按钮 , 点击次数 )  向指定控件发送鼠标点击命令;
    ;其中,title即AutoIt Window Info识别出的Title字段,controlID即AutoIt Window Info识别出的Class和Instance的拼接,如上图拼接后的结果应为:Button1;

;title必须对应正确即窗口的title,"text"可写可不写,
ControlFocus("打开","text","Edit1")
WinWait("[CLASS:#32770]","",10)
;ControlSetText("打开","","Edit1","C:\Users\Administrator\Desktop\test\upload_file.txt")  这里的“text” 不必写,写就不能正确执行了
ControlSetText("打开","","Edit1","C:\Users\Administrator\Desktop\test\upload_file.txt")
Sleep(2000)
ControlClick("打开","","Button1")

在这里插入图片描述

ControlFocus()方法用于识别Window窗口。
WinWait()设置10秒钟用于等待窗口的显示,其用法与WebDriver所提供的implicitly_wait()类似。
ControlSetText()用于向“文件名”输入框内输入本地文件的路径。
Sleep()方法与Python中time模块提供的Sleep()方法用法一样,不过它是以毫秒为单位,Sleep(2000)表示固定休眠2000毫秒。
ControlClick()用于点击上传窗口中的“打开”按钮。

AutoIt的脚本已经写好了,可以通过菜单栏“Tools”–>“Go” (或按键盘F5)来运行一下脚本吧!注意在运行时上传窗口当前处于打开状态。运行后即可看到会自动输入文件路径并自动点击“打开”完成文件上传。

3、生成exe程序

保存的脚本可以通过Run Script 工具将其打开运行,但我们的目的是希望这个脚本被Python程序调用,那么就需要将其生成exe程序。打开Compile Script to.exe工具,将其生成为exe可执行文件。
在这里插入图片描述

三、通过命令行执行

为了演示AutoIt命令行参数,我们这里修改一下脚本,把上传的文件路径修改成$CmdLine[1],然后重新生成exe程序。

代码:

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

CMD命令:upload.exe "C:\Users\Administrator\Desktop\test\upload_file.txt"

在脚本中,$CmdLine[0] 获取的是命令行参数的总数,$CmdLine[1]~$CmdLine[63] 获取的是命令行参数第1到第63位,这个方式最多只能获取63个参数,不过正常情况下是足够用的,$CmdLineRaw 获取的是未拆分的所有参数。
在上例中,$CmdLine[0]=1$CmdLine[1]="C:\Users\Administrator\Desktop\test\upload_file.txt"$CmdLineRaw=upload.exe "C:\Users\Administrator\Desktop\test\upload_file.txt"
在这里插入图片描述

四、通过Python用os模块调用

接下来就是通过Python用os模块的system()方法来调用exe程序并执行:

import os
import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://sahitest.com/demo/php/fileUpload.htm')
# 点击“选择文件”按钮
driver.find_element_by_css_selector('form>#file').click()
# 调用exe上传文件
command = "upload.exe  C:\Users\Administrator\Desktop\test\upload_file.txt"
os.system(command)
# 点击“Submit Single”按钮
driver.find_element_by_css_selector('form>input[type="submit"]').click()

time.sleep(3)
driver.quit()

更多文件上传的处理方法请参见 Selenium系列教程 - 文件上传

在这里插入图片描述


在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium系列教程 - AutoIt命令行参数 的相关文章

随机推荐

  • 1-Linux_虚拟机VMware 15安装教程

    虚拟机VMware 15安装教程 https www onlinedown net soft 2062 htm 1 由上面的网址下载VMware 15后双击运行安装程序点击下一步 进行安装 2 在最终用户许可协议界面选中 我接受许可协议中的
  • 为什么要用TSubClassOf

    2019独角兽企业重金招聘Python工程师标准 gt gt gt TSubclassOf 是提供 UClass 类型安全性的模板类 例如您在创建一个投射物类 允许设计者指定伤害类型 您可只创建一个 UClass 类型的 UPROPERTY
  • vsocde vue snippet 设置

    vue snippt 设置 建议下在一个 vetur extensions 1 首先打开 vue json 文件 ctrl p 搜索 vue json 文件 enter File gt preferences gt User sneppts
  • MSBuild入门

    MSBuild是什么 MSBuild全称 Microsoft Build Engine 是用于构建应用程序的平台 您可能不知道它 但是如果您在使用VS做开发 那么一定时时刻刻在使用它 因为是它在背后为你管理生成你的项目文件 当新建一个项目时
  • ARM汇编指令集·带例题

    目录 32位ARM汇编指令集 32位数据操作指令 32位存储器数据传送指令 32位转移指令 其它32位指令 指令具体用法 数据处理指令 MOV指令 ADD指令 SUB指令 MUL指令 CMP指令 ORR逻辑或 BIC指令 转移指令 B指令
  • Maven进阶-配置私服(Nexus 的使用)

    Maven进阶 配置私服 Nexus 的使用 引言 一 Nexus 的下载 二 Nexus 启动服务器 三 首次配置 Nexus 四 新建仓库 五 设置仓库组 六 仓库的 URL 七 Maven 的配置 1 配置 mirror 2 配置 s
  • mysql select into 新表_SELECT INTO 语句数据表全表复制备份

    select into 语句数据表全表复制备份 select into 语句常用于创建表的备份复件或者用于对记录进行存档 sql select into 语法 您可以把所有的列插入新表 select into new table name
  • C++replace_all strip函数

    replace all occurance of t in s to w void replace all std string s std string const t std string const w string size typ
  • python语言需要注意的几点

    keyword kwlist可以打印出python所有关键字 import keyword print keyword kwlist 不需要使用大括号 但必须对齐 if True print Answer print True else p
  • 接口测试的标准和规范性

    一 接口测试测试点 1 要考虑接口的正常调用 1 按照接口定义 传递正确的接口信息 包括地址 方法 传输数据 然后查看接口返回的响应结果是否正确 数据库的数据是否正确 2 传递的请求数据需要覆盖有效类 边界值 3 返回的响应结果的每个字段都
  • Nginx简介及配置文件详解

    一 Nginx简介 Nginx是一款开源代码的高性能HTTP服务器和反向代理服务器 同时支持IMAP POP3 SMTP代理服务 1 Nginx工作原理 Nginx由内核和模块组成 完成工作是通过查找配置文件将客户端请求映射到一个locat
  • TCP 几个字段含义

    1 tcp out of order tcp有问题 2 tcp segment of a reassembled PDU 3 Tcp previous segment lost tcp先前的分片丢失 4 Tcp acked lost seg
  • 双指针简化双for循环系列(一)27.移除元素

    https leetcode cn com problems remove element class Solution public int removeElement int nums int val 快慢指针 int fastInde
  • 输入/选择自动聚焦放大引起的问题

    加一行
  • 执行docker-compose -V报错及升级后报/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28‘ not found问题解决记录

    在试用一个开源项目时需要用到docker compose 执行项目提供的脚本 gt docker up sh Builds re creates starts and attaches to containers for a service
  • C# 文件相关---新建文件、文件另存为、读写文件

    判断文件夹是否存在 using System IO string path D WorkStation if Directory Exists path 文件夹存在 int i 0 新建空文件夹 System IO Directory Cr
  • Unity:异步加载场景资源进度界面

    创建加载界面LoadingScene 用于处理加载进度条 导入NGUI资源包 在Unity3D菜单栏中选中NGUI Open Prefab Toolbar 在Prefab Toolbar窗口中 选中Control Colored Progr
  • 部分选主元 LU 分解,CGETRF in lapack 选主元时调用 ICAMAX

    ICAMAX finds the index of the first element having maximum Re Im 也就是找出一列 complex 类型的数据中 实部的绝对值 虚部的绝对值 最大的那个元素 这样选出来的主元也还
  • 学习记录——关UNet、特征图add、cat、相乘、三个 注意力

    关于UNet网络 这部分有利于将下采样的各个阶段的信息在上采样过程中进行整合 就是在上采样的过程中 结合了各个层次的结构信息 通俗的来讲就是在网络的高层 就是U型的上部分 获取了图形的细节信息 因为这时候图片很大 很多细节可以得以保留 在网
  • Selenium系列教程 - AutoIt命令行参数

    主要内容 一 AutoIt下载安装 二 AutoIt使用 1 识别控件 2 编写脚本 3 生成exe程序 三 通过命令行执行 四 通过Python用os模块调用 Selenium对网页进行UI自动化时经常会遇到Windows弹框 比如上传