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

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本


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系列教程 - 文件上传

在这里插入图片描述


在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值