python autoit上传文件_结合python+selenium使用AutoIt V3实现文件、图片上传

1.下载、安装AutoIt V3

下载官网:https://www.autoitscript.com/site/autoit/downloads/

2.AutoIt V3组件介绍

AutoIt Windows Info 或者Au3Info_x64.exe       用于帮助我们识别Windows控件信息。

Compile Script to.exe 或者Aut2exe_x64.exe    用于将AutoIt生成 exe 执行文件。

Run Script       或者AutoIt3.exe                   用于执行AutoIt脚本。

SciTE Script Editor      或者SciTE.exe        用于编写AutoIt脚本。

3.AutoIt V3的使用步骤

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

AutoIt的脚本已经写好了,可以通过菜单栏“Tools”-->“Go” (或按键盘F5)来运行一个脚本吧!注意在运行时上传窗口当前处于打开状态。

(3)脚本运行正常,将其保存为upload.au3,这里保存的脚本可以通过Run Script 工具将其打开运行,但我们的目的是希望这个脚本被Python程序调用,那么就需要将其生成exe程序。打开Compile Script to.exe工具,将其生成为exe可执行文件。如图下图:

点击“Browse”选择upload.au3文件,点击“Convert”按钮将其生成为upload.exe程序

(4) 下面就是通过自动化测试脚本调用upfile.exe程序实现上传了。

fromselenium import webdriver

import time

import os

d=webdriver.Chrome()

d.maximize_window()

d.get(url) # 访问网站地址,url为网站地址参数

d.find_element_by_xpath('//*[@id="userName"]').send_keys(username) #输入网站账号(username为账号名参数)

d.find_element_by_xpath('//*[@id="userPwd"]').send_keys(pass) #输入网站账户密码(pass为密码参数)

d.find_element_by_xpath('//*[@id="login"]').click()

time.sleep(3)

# 资料管理

d.find_element_by_xpath('//*[@id="menu_ul"]/li[5]/a').click()

# 批量导入(打开上传功能页面)

iframe= d.find_elements_by_tag_name('iframe')[2]

d.switch_to_frame(iframe)

d.find_element_by_xpath('//*[@id="nav-accordion"]/li[3]/a').click()

time.sleep(2)

# 选择文件(点击打开上传窗口)

d.switch_to_frame('mainframe')

time.sleep(2)

d.switch_to_frame('uploadFrame')

d.find_element_by_xpath('//*[@id="terminalForm"]/div/div[2]/div[1]/div/button/span').click()

os.system("upload.exe") # 调用upload.exe上传程序

通过Python 的os模块的system()方法可以调用exe程序并执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度贴吧的数据抓取和分析(一):指定条目帖子信息抓取

这个教程使用BeautifulSoup库爬取指定贴吧的帖子信息。 本教程的代码托管于github: https://github.com/w392807287/spider_baidu_bar 数据分析部分请移步: python版本:3.5.2 使用BeautifulSoup库获取网页信息 引入相关库: from bs4 import …

在ES6类中绑定事件

概述 ES6提供了类,给模块化带来了很大的帮助。在类里面绑定事件,一来是为了使得代码结构清晰,二来是为了可以使用类的变量和方法。但是,由于事件的回调函数并不是由类的实例对象触发,所以,事件回调函数里面…

DevExpress.Utils.ToolTipLocation

private void textBox1_TextChanged(object sender, EventArgs e){if ((sender as TextBox).Text.Length 0){DevExpress.Utils.ToolTipLocation tipLocation new DevExpress.Utils.ToolTipLocation();toolTipController1.ShowHint("不能为空", textBox1, ToolTipLo…

github基本使用教程

2017-10-22 更新 目前已经有一个很好的Github教程—— Git it,可以花半个小时比较全面的了解github的使用,直接在relaese里下载一个最新版,双击运行就可以看到教程了。下面的教程也还可使用。 如果不熟悉 git命令,可以使用 learngitbranchi…

python while九九乘法表儿歌_python使用while循环实现九九乘法表

protocol http not supported or disabled in libcurl apt-getubuntu 14.04 碰到了这个莫名其妙的问题.谷歌了一把,解决方案如下:http://askubuntu.com/questions/683857/curl-1-protocol-https-n ...linux基础-基本命令的讲解(1-7单元)基本命令的讲解 主要内容介绍 1…

EF+postgresql中的一些问题

需要基于MVC的WebAPI搭建一个服务接口,数据存储在postgresql数据库,在使用的过程中遇到了很多问题。做一下记录: (1) System.IO.FileLoadException: 未能加载文件或程序集“Npgsql, Version3.1.2.0, Cultureneutral, P…

Navicat Error 2003 - can't connect to mysql server 'localhost' (10061)

项详细出错对象:Navicat for mysql出错信息:2003 - can’t connect to mysql server ‘localhost’ (10061)出错原因:mysql 服务器没有启动解决办法:去mysql的安装目录下找到“\bin\mysqld.exe”,双击运行!…

▲数据结构 笛卡尔树【2011】五2 C++版

转载于:https://www.cnblogs.com/qilinart/articles/5940726.html

运行时异常与一般异常有何异同_Java修行第015天,异常机制和常用类

1. 异常概念_分类1) 什么叫异常?答:异常(Expection)就是在程序运行过程中所发生的不正常的事件,它会中断正在运行的程序2) 请简述异常的分类?答:异常分为Error(仅靠程序本身无法恢复的严重错误)和由Java应用程序 抛出和处理的非严重错误.非严重错误又分为…

js 自定义事件

自定义事件很难派上用场? 为什么自定义事件很难派上用场,因为以前js不是模块化开发,也很少协作。因为事件本质是一种通信方式,是一种消息,只有存在多个对象,多个模块的情况下,才有可能需要用到…

uWSGI安装配置

uWSGI安装配置官方网站:http://uwsgi-docs.readthedocs.io环境:CentOS 7.2python-2.7.5一.安装yum -y install gcc gcc-c python-develcurl -sSL https://projects.unbit.it/downloads/uwsgi-2.0.14.tar.gz |tar -xvf - --gzipcd uwsgi-2.0.14make -j4################# uWSGI …

python日志输出 超量 停止_linux 内存分配参数导致的 buffer_pool 分配不出来的问题排查...

linux 内存分配参数导致的 buffer_pool 分配不出来的问题排查:参考:http://blog.csdn.net/jollyjumper/article/details/24127009原文:http://www.cnblogs.com/gomysql/p/6130405.htmlvm.overcommit_memory默认值为:0从内核文档里…

javascript自定义事件应用实例

可以先看例子 从 js 自定义事件 里知道:元素A通过dispatchEvent方法触发的事件,只有A上注册的监听器才能监听得到。 我们想要的效果是,别的对象干了某件事之后, 发个消息给我们,好让我们能做相应的改变。要做到这样…

啥是ETL、ELT

ETL就是Extract、Transfrom、Load即抽取、转换、加载三个英文单词首字母的集合。抽取:就是从源系统抽取需要的数据,这些源系统可以是同构也可以是异构的:比如源系统可能是Excel电子表格、XML文件、关系型数据库,而目标系统通常都是…

python无法导入numpy_python – Pycharm无法导入numpy

我的系统是Mac OS X.我首先通过macport安装numpy然后下载Pycharm并发现无论我选择哪种解释器我都无法导入numpy.结果如下:/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 "/Users/erleye/Documents/Python/Pycharm Projects/test.py"T…

DOM Element对象的offsetXXX方法

原生js的offset***方法 c.offsetLeft 和 c.offsetTop 一般指当前元素的CSS边框相对于其offsetParent的X和Y坐标c.offsetHeight 和 c.offsetWidth 当前元素及其所有内容的高度&#xff0c;宽度。c.offsetParent 大多数元素都的都是指<body> 参考《javascript权威指南 第六…

weblogic10异常:org.hibernate.hql.ast.HqlToken

转自&#xff1a;http://www.programgo.com/article/68682994452/ 在做查询的时候&#xff0c;报出 org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken这 个错误&#xff08;是通过数据源连接的&#xff09; 解决方法如下&#xff1a;…

出现一个黑色框按不动_创意 | 这才是走心的衣架设计,给衣服一个高逼格的家!...

12月&#xff0c;来到了年底剁手的时节自己新买的秋冬衣服&#xff0c;加上以前的衣服几乎都要把你的衣橱给撑爆了只恨衣架不够用&#xff0c;够用也没有空间可以挂衣服了也许以前的衣架只是为了挂衣服&#xff0c;让空间变得整洁一些&#xff1b;现如今&#xff0c;衣架从样式…

windows搜索工具_加快搞定并替代 Windows 10 搜索框搜索文件速度的免费小工具

毫无疑问&#xff0c;Everything 搜索是 Windows 操作系统上可用的最快的搜索工具之一。它比内置的 Windows 搜索工具快得多&#xff0c;因为它几乎立即返回结果&#xff0c;并支持许多自定义选项以优化搜索。而今天大眼仔要给大家分享的是可以把 Everything 固定的任务栏上的免…

同步和异步简述

同步&#xff1a;执行当前进程&#xff0c;当进程执行到某个请求时&#xff0c;若该请求需要一段时间才返回信息&#xff0c;那么这个进程将会一直等待下去直到请求返回。 异步&#xff1a;与同步相反&#xff0c;他不会等到直到信息返回才继续执行下去&#xff0c;而是直接执行…