Closed vieyahn2017 closed 3 months ago
https://blog.csdn.net/mush_me/article/details/84818177
看了介绍,知道了一些用处,但是我们一般都把这个脚本语言用来干什么?它和其它的语言相比有哪些特点?我们为什么要学习它?
我们一般将它用来作一些自动化的操作,因为Autoit一开始就是设计用来AUTO的。当然,现在它也可以有界面,可以编译成独立且小巧的EXE运行。看起来它和VB差不多,它可以操作IE,WORD,EXCEL,数据库,还可以操作标准的WINDOWS控件——这本就是它的基本功能。也可以模拟按键。下面给出一个带有界面,有BUTTON,有INPUT的小程序。
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 123, 120, 445, 313)
$Button1 = GUICtrlCreateButton("按钮", 24, 80, 75, 25)
$Input1 = GUICtrlCreateInput("这是输入框", 16, 16, 89, 21)
$Label1 = GUICtrlCreateLabel("这个是标签吧?", 16, 48, 88, 17)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
f()
EndSwitch
WEnd
Func f()
MsgBox(48,"标题","过五秒这个对话框将消失。",5)
GUICtrlSetData($Label1,"标签被改变。")
GUICtrlSetData($Input1,"Input被改变。")
EndFunc
这个小程序带有一个函数,就是定义在func.....endfunc里面。消息循环在while....wend里面。接收到$button1被按下的消息,就会执行f()。include主要用来包含需要的文件,下面的界面代码,由KODA生成,可以在工具箱里找到。这样的程序有个小缺点,就是每次都会在系统的通知区域出现一个AU3的图标,而且点击这个图标,脚本执行会停下来。不过我们可以在脚本里加入:Opt ("TrayIconHide",1)来去掉这个显示。多看帮助,大家可以发现,这是一个简单有趣的小东西,而且它还可以使用COM对象,大家可以到坛子里看到更多的牛人写的东西。听说官方坛子已经有人开发出了用AU3写WEB脚本的解释程序。
https://blog.csdn.net/az9996/article/details/86013639
枪枪枪 2019-01-07 17:20:11 1713 收藏 6 分类专栏: Python 版权 python结合AutoIt工具后真是太赞了!能很大程度上实现自动化操作。
这次只是一个很简单的演示,但是所用的方式能产生很多可能,~ ~ !!! 完善了webdriver的功能! 使用场景:针对网页内嵌套的flash窗口,selenium中的webdriver无法操作造成断点时,使用AutoIt工具来解决。
https://blog.csdn.net/s740556472/article/details/79322047
s740556472 2018-02-13 16:57:21 9508 收藏 9 分类专栏: |----Python 文章标签: pythonselenium自动化autoit文件下载 版权 前言 selenium是一个很强大的web自动化框架,之前也有用它写过东西,详见: http://blog.csdn.net/s740556472/article/details/78150666 然而对于文件的上传与下载它却显得无力,它虽然可以通过web driver驱动对浏览器的元素进行操作,可当点击下载,浏览器弹出的窗口它无法与其进行交互。 当然在网上也查阅了大量资料去尝试,谷歌浏览器有一种设置可以直接下载,通过这种方式下载的文件有几点诟病:
无法重命名下载文件。 一旦文件被谷歌浏览器检验出有害(例如下载jar包格式的文件),浏览器会弹出另一层确认选项卡(该文件会损害您的电脑,是否保存),这样一来用selenium便实现不了功能了。 此篇有些略长,若想实现功能,请静下心来慢慢看,比较详细,若有错误还望指出! 思路 对于selenium本身而言,通过驱动的方式不可行,但是还有另一种方式,就是通过右键超链接位置,有个另存为的选项,沿着这个思路下去,便解决了selenium的无力。
不管是新机器,还是旧机器重装系统后,都有一大堆的工具要一个一个安装。之前也有同事提到过相关改进建议,希望能一键式实现所有工具安装。这个想法是挺好的,不过实现起来并不是很容易的事情。
目前公司有rtools,加上翻译中心常用工具清单,其实也还是可以根据清单列表来自行安装工具的。
想过将整个C盘做镜像,这样在安装操作系统时就自动将所有必需的工具安装上了。这种方式涉及的环节比较多。
后来查阅了一些资料,简单一点的方法,可以通过使用AutoIt来制作安装包。另外一个工具InstallRite也可以制作自动化安装包,相对来说AutoIt的功能更强大一些。
具体操作过程可参考百度文库上的文章:http://wenku.baidu.com/view/22b31581b9d528ea81c779fb.html
初步尝试了制作一个自动化安装工具包,可自动化实现安装FAR、Notepad++、Practicount。这几个都是比较小的工具,操作相对容易一些。像那些Trados、Arbortext等较大的工具,安装步骤复杂,暂没有实现安装包制作。
https://blog.csdn.net/yuwanfei/article/details/51352462
犀利不糊涂 2016-05-09 13:43:04 3264 收藏 2 分类专栏: 杂谈 版权 首先说明,本人不是计算机人员,而是一名财务人员。只是爱好编程。因此自学了C,C++,C#,VBA,Autoit等简单的语法。也能用这些编程语言通过VS(MFC,VC#),QT,Excel等写一些简单的程序(请见我的下载资源)。这些程序有的是为了熟悉编程流程比如简单版的计算器(c++->MFC),有些是提高工作效率的小工具比如(EXCEL自动匹配程序,银行对账工具)。其中最好用的,可以真正称得上软件的居然是AUTOIT写的一个会计上的AR清帐对账方面,SAP等ERP软件根本不能满足要求,因为称得上是个软件,因此涉及的方面比较多。我就没上传。需要的可以留言。谢谢!
我没有为上面的软件起名字。功能主要是2大块:
1、自动做账并清帐。也就是把公司的银行回款自动做到SAP等ERP系统里或者说财务系统里。会计凭证号码自动保存到自己想要的地方。
2、预付款清帐。如果1中的银行回款是预付款。则在1中直接做账不清帐。以后定期由2这个模块自动清帐。
3、清帐查询。客户如果要对回款方面的账。在这个软件里很容易查询,SAP等软件却很难,因为SAP等ERP软件都是在你做进去账的基础上查询,如果你没做对账呢?比如A客户的回款不小心放在了B客户的账上。等A来跟你对账的时候,你是不知道这笔回款的存在的。你可以会说查银行帐啊。既然做这个软件就是因为很多企业的银行每天都很多。特别是贸易性企业。SAP查银行帐功能很多,但实在不方便,速度也太慢。比如,有个客户叫ABC公司,他们说我们上个月给你付款1000元,让你查下到账没有。SAP首先要在xd03中查出ABC的客户编码,然后在FBL5N中查看这个客户的账,如果账上的确有1000元还好。如果没有呢?就只好用GL的FBL1N去查银行明细账。然后输入金额,查1个月的。数据量大。等个3-5分钟是正常的。有很多个1000元呢。你又不能马上看出哪笔是这个客户的付款而做到其他客户账上了,或者干脆放在了Unknown。
以上3个功能提高做账查账效率,输入准确性(可以说是0误差的输入)。
3个大功能还有具体的小功能比如数据上传,数据导出,编辑清帐记录。查询条件的多样和模糊性等等。
当然还有不完善的地方,比如,SAP中清帐记录只是有了凭证级别的号码信息,而没有具体的Billing号码信息,甚至订单货物发票号码信息等。由于公司也不让我们随便装软件。我用的是SQLITE文件型数据库。如果是MSSQL SERVER,或者MYSQL,那就可以扩展很多。否则数据量大了以后DB文件太大。
看下软件界面图吧:
1和2的功能全在命令菜单里。基本上无界面,就是说你点一下菜单,就会自动打开SAP或者激活SAP相关的T_CODE,然后自动录入或者清帐。
Cybaze-Yoroi ZLab研究人员1月份调查了APT28的一起最新活动。样本最早是意大利安全研究人员发现的,随后在infoSec安全社区共享了该样本。
APT28最新活动:Zepakab下载器分析
Cybaze-Yoroi ZLab安全研究人员根据该样本进行了进一步分析。
技术分析
攻击向量还不明确,APT28一般使用含有VB宏的诱饵office文档。但分析的样本假装模仿微软的serviceTray组件。
APT28最新活动:Zepakab下载器分析
乍一看,可执行文件是用UPX v3.0压缩器压缩的,这是一种压缩PE文件大小的常用工具。
APT28最新活动:Zepakab下载器分析
图1. 恶意PE信息
有趣的是,可执行文件的resource部分是典型的AutoIt v3编译的脚本二进制文件模式:AUT3!签名。
目录 一、Autoit 二、python和selenium 三、python和requests
本总结以自动化申请夜宵为例,旨在帮助想学习自动化控制网页的同事快速入门。
autoit是windows下的GUI自动化操作工具,可以操作鼠标、键盘和任何windows的标准控件,自动化控制IE只是它的功能之一。
1.1 autoit的安装
下载附件的autoit-v3,解压缩,无需安装。打开目录autoit-v3\install\SciTe的SciTE.exe,这是编辑器,直接在这上面写代码,按F7编译,按F5运行。
1.2 语法
在SciTE上按F1,打开帮助,选中目录->AutoIt->Keyword Reference,看这里。AutoIt的帮助文档非常详细,基本不用找其它的资料。
1.3 autoit的ie组件
打开帮助,选中目录->User Defined Functions Reference->IE Management,在这之下即是控制IE的所有函数,每个函数不仅解释详细且有例子。
1.4 自动化脚本,模拟手动操作
vb代码
#include <IE.au3> ;引入IE头文件
Func main($username, $password, $boss_sequence)
;参数boss_sequence是HR权签人中主管的序号,从1开始,比如HR权签人显示3位主管,你想选中第二位,这里就填2
Global $oIE = _IECreate("http://wx...com/nightsnack/hrscMenuAction.do?id=20225") ;打开网页
_IELoadWait($oIE) ;等待加载网页
Local $html = _IEDocReadHTML($oIE) ;获取网页的内容
If StringInStr($html, "uid") Then
Local $user_ele = _IEGetObjByName($oIE, "uid") ;获取名为uid的控件
$user_ele.value = $username ;设置为域账户
Local $password_ele = _IEGetObjByName($oIE, "password") ;获取名为password的控件
;$password_ele.value = $CmdLine[2]
$password_ele.value = $password ;设置为账户的密码
Local $submit = _IEGetObjByName($oIE, "Submit") ;获取名为Submit的控件
$submit.click() ;点击提交登录
_IELoadWait($oIE) ;等待加载网页
EndIf
$html = _IEDocReadHTML($oIE)
If StringInStr($html, "uid") Then
MsgBox(0,"填报yx工具提醒","用户名或密码错误")
_IEQuit($oIE)
Else
Local $select_Hr_Approver = _IEGetObjByName($oIE, "Select HR Approver") ;获取HR权签人控件
_IEAction($select_Hr_Approver, "click") ;点击HR权签人
Sleep(500)
Local $select_boss = _IEGetObjByName($oIE, "radioS", $boss_sequence-1) ;获取主管的单选框控件
_IEAction($select_boss, "click") ;选择主管
Sleep(500)
Local $ok = _IEGetObjByName($oIE, "ok") ;获取ok按钮控件
_IEAction($ok, "click") ;点击ok按钮
Sleep(500)
Local $sub = _IEGetObjByName($oIE, "sub") ;获取提交按钮
_IEAction($sub, "click") ;点击提交按钮
ControlClick("来自网页的消息", "", "[CLASS:Button; TEXT:确定]")
_IELoadWait($oIE)
Sleep(4000)
$html = _IEDocReadHTML($oIE)
If StringInStr($html, "已提交") Then
MsgBox(0,"夜宵填报工具","夜宵已成功提交")
EndIf
_IELinkClickByText($oIE, "注销") ;点击注销按钮
_IEQuit($oIE) ;退出IE
EndIf
$ClearID = "32"
Run("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess " & $ClearID) ;清除ie密码记录
EndFunc
main("账号","账号密码", 2)
···
## 二、python和selenium
selenium是网页的自动化测试框架,支持python和java,而且不像Autoit只能操作IE,selenium也能控制chrome和火狐。
2.1 安装python和selenimu模块
2.1.1 python安装:
2.1.2 selenium模块请从附件下载,并把附件的IEDriverServer.exe和.py文件放在同一个目录下
2.2 参考书
推荐《selenium 2 自动化测试实战基于Python语言》,可以到我工位借阅。
2.3 脚本示例
python代码
```python
def webOption(username, password, bossname=''):
driver = webdriver.Ie()
driver.get('http://wx...com/nightsnack/hrscMenuAction.do?id=20225')
user_ele = driver.find_element_by_name('uid')
user_ele.clear()
user_ele.send_keys(username)
password_ele = driver.find_element_by_name('password')
password_ele.clear()
password_ele.send_keys(password)
driver.find_element_by_name('Submit').click()
time.sleep(3)
try:
driver.find_element_by_link_text(u'注销')
except Exception:
win32api.MessageBox(0, u"用户名或密码错误", u"来自yx自动提交工具", win32con.MB_ICONERROR)
driver.quit()
driver.find_element_by_name('Select HR Approver').click()
time.sleep(0.5)
driver.find_element_by_xpath("//input[@value='" + bossname + "']").click()
time.sleep(0.5)
driver.find_element_by_name('ok').click()
time.sleep(0.5)
driver.find_element_by_name('sub').click()
time.sleep(0.5)
driver.switch_to_alert().accept()
time.sleep(1)
driver.quit()
# win32api.MessageBox(0, u"夜宵已成功提交", u"来自夜宵自动提交工具", win32con.MB_OK)
requests模块的作者自称为HTTP for humans,它的设计思路非常符合人类思维习惯,因此自诞生之日起就广受好评。
3.1 安装requests模块
请从附件下载,如果安装失败,请根据失败提示,安装其它依赖组件。
3.2 学习资料
http://cn.python-requests.org/zh_CN/latest/
3.3 从附件下载Fiddler工具,分析浏览器和服务器的行为
3.4 脚本示例
python代码
#!/usr/bin/python2.7
# encoding=utf-8
import requests
import re
def logW3(username, password):
'''
登录W3
: params: userName: 账号
password: 密码
: return: r: requests.Session()类型
'''
login_url = 'https://login...com/login/login.do'
headers = {'User-Agent' : 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)'}
param = {'actionFlag': 'loginAuthenticate',
'lang': 'en',
'loginMethod': 'login',
'loginPageType': 'mix',
'password': password,
'redirect': 'http://ms....com/hi/home?_type=menu',
'redirect_local': '',
'uid': username}
redirect_url = "http://ms...com/hi/home"
r = requests.post(login_url, headers=headers, params=param) # 登录, 获取cookie
# print(r.status_code, r.text) # 返回状态值
# print(r.content )
if re.search('欢迎', r.content):
print('w3登录成功')
return r
else:
raise Exception('w3登录失败')
def submitNightSnack(username, password, boss_name_str, boss_id_str):
'''
提交夜宵补助
: params: userName: 账号
password: 密码
boss_name_str: 主管姓名,如'zhang'
boss_id_str: 主管工号
'''
# 登录W3
r = logW3(username, password)
# 获取加班日期
headers_base = {
'Host': 'w3...com',
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Referer': 'http://w3...com/nightsnack/hrscMenuAction.do?id=20227&&returnURL=20225',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
url = 'http://w3...com/nightsnack/hrscMenuAction.do?id=20225'
# print(url)
s = requests.get(url, headers=headers_base, cookies=r.cookies)
# print(s.status_code, s.text)
# print(s.content)
rPattern = re.compile(r'<td align="center">(\d{4}-\d{2}-\d{2})', re.M)
overtime_date_list = rPattern.findall(s.content)
print('加班的日期:', overtime_date_list)
# 提交加班申报
headers_base = {
'Host': 'w3...com',
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Origin': 'http://w3...com',
'Upgrade-Insecure-Requests': '1',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Referer': 'http://w3...com/nightsnack/hrscMenuAction.do?id=20225',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
data = ''
for overtime_date in overtime_date_list:
data += '%s=1&%sold=1&%scheck=1&%slock=0&' % (overtime_date, overtime_date, overtime_date, overtime_date)
data += 'superiorNotesID=%s+%s' % (boss_name_str, boss_id_str)
url = 'http://wx...com/nightsnack/hrscMenuAction.do?id=20227&&returnURL=20225'
r = requests.post(url=url, headers=headers_base, cookies=r.cookies, data=data)
# print(s.content)
if re.search('已提交', s.content):
print('yx补助提交成功')
else:
print('yx补助提交失败')
if __name__ == '__main__':
submitNightSnack('user', 'yourpassword', 'zhangxxx', '00xxxxxx')
上一楼 帖子的python代码 带有行号。 用以下的脚本简单处理
ct = """
-vb代码
01
#include <IE.au3> ;引入IE头文件
02
03
Func main($username, $password, $boss_sequence)
04
;参数boss_sequence是HR权签人中主管的序号,从1开始,比如HR权签人显示3位主管,你想选中第二位,这里就填2
05
Global $oIE = _IECreate("http://wx...com/nightsnack/hrscMenuAction.do?id=20225") ;打开网页
06
_IELoadWait($oIE) ;等待加载网页
07
Local $html = _IEDocReadHTML($oIE) ;获取网页的内容
08
If StringInStr($html, "uid") Then
09
Local $user_ele = _IEGetObjByName($oIE, "uid") ;获取名为uid的控件
10
$user_ele.value = $username ;设置为域账户
11
Local $password_ele = _IEGetObjByName($oIE, "password") ;获取名为password的控件
12
;$password_ele.value = $CmdLine[2]
....
"""
print('\n'.join([x[2:] for x in ct.split("\n")]))
# 去掉前两个字符
In [13]: a=["22", "23", "33","aa"]
In [14]: filter(lambda x: x.startswith("2"), a)
Out[14]: ['22', '23']
import re
def end_num(string):
#以一个数字结尾字符串
text = re.compile(r".*[0-9]$")
if text.match(string):
return True
else:
return False
def start_num(string):
#以一个数字结尾字符串
text = re.compile(r"^[0-9].*$")
if text.match(string):
return True
else:
return False
print(end_num('abcdef'))
print(end_num('abcdef6'))
print(start_num('6abcdef'))
print(start_num('abcdef'))
# 去掉帖子的数字行(其实是跨行的行号)
print('\n'.join(filter(lambda x: not start_num(x), ct.split("\n") ) ))
AutoIt 目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。而这是其它语言不可能做到或无可靠方法实现的(例如VBScript和SendKeys).
功能:
1、运行Windows和Dos程序[1] 2、模拟键击动作(支持大多数键盘布局) 3、模拟鼠标移动和点击动作 4、对窗口进行移动,调整大小和其它操作 5、直接与窗口的“控件“交互(设置/获取文本,移动,关闭等等) 6、配合剪贴板进行剪切/粘贴文本操作 7、对注册表进行操作 8、不同于AutoIt v2版本,新的v3版本有更多标准语法-类似于VBScript和BASIC-而且支持更复杂的表达式,用户函数,循环以及脚本编写老手们所期待的其它所有内容. 9、正如以前版本一样,AutoIt设计得尽可能的小(大约115KB)并且不用依赖外部DLL文件或添加注册表项目即可独立运行.此外使用 Aut2Exe 这个工具还可以把脚本文件编译为独立的可执行程序. 10、同时升级了ActiveX和DLL版本在AutoIt里称为 AutoItX - 与v2版本不同的是它将是一个组合控件 (COM组件对象模型和同一DLL文件中的标准DLL函数).AutoItX 将允许您加入一些AutoIt独有的特性到您最常用的脚本语言或程序设计语言中去!请查看这AutoItX帮助文件 (开始 \ 程序\ AutoIt v3 \ Extras \ AutoItX \ AutoItX Help File) 以获得更多信息和示例. 最重要的是,AutoIt 将继续是免费的 - 但是如果您打算支持我们花在此工程的时间,金钱以及所作努力和网站主机运作的话,那么您可以到AutoIt的主页上进行捐赠.