一、环境准备:

1.可以autoit官网上下载,安装 http://www.autoitscript.com/site/

 2.AutoIt里面几个菜单功能介绍:

  • SciTE Script Editor 编辑器,在这里编写AutoIt脚本
  • AutoIt Windows Info 元素定位器,用于识Windows控件信息
  • Run Script 执行AutoIt脚本
  • Compile Script to.exe 将AutoIt生成 .exe 可执行文件

3.autoit 在线文档,是中文版http://www.autoitx.com/Doc/

二、脚本实现:

1.先准备好web页面的环境,以博客园的上传图片为例:添加新随笔>点图片上传>上传本地图片>弹出选择图片界面,在这里不要动了

2.打开 SciTE Script Editor编辑器,开始写脚本,代码非常简单只有四行

WinActivate("打开");

ControlSetText("打开", "", "Edit1", "F:\11.png");

Sleep(2000);

ControlClick("打开", "", "Button1");

3.编辑完成后执行,tools>go ;或者按f5执行,执行完之后就能看到图片上传成功了。

4.autoit几个常用的语法

  • WinActivate("title") 聚焦到指定活动窗口
  • ControlFocus ( "title", "窗口文本", controlID) 设置输入焦点到指定窗口的某个控件上;
  • WinWait ( "title" , "窗口文本" , 超时时间 ) 暂停脚本的执行直至指定窗口存在(出现)为止;
  • ControlSetText ( "title", "窗口文本", controlID, "新文本" ) 修改指定控件的文本;
  • Sleep ( 延迟 ) 使脚本暂停指定时间,单位是毫秒;
  • ControlClick ( "title", "窗口文本", 控件ID , 按钮 , 点击次数 ) 向指定控件发送鼠标点击命令;

三、元素定位

1.Find Tool 查看元素属性,用鼠标按住Find Tool下的图标,然后拖拽到你想定位的元素上

2.查看controlID,controlID即AutoIt Window Info识别出的Class和Instance的拼接

四、导出exe文件

在应用程序里面找到打开Compile Script to.exe工具,将刚才导出的.au3文件转化成.exe文件


from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import os,time '''登录博客'''
driver = webdriver.Chrome()
driver.get("https://passport.cnblogs.com/user/signin")
driver.implicitly_wait(10) """账号和密码登录"""
driver.find_element_by_id("LoginName").send_keys("xxxx")
driver.find_element_by_id("Password").send_keys("xxxx")
driver.find_element_by_id("IsRemember").click()
login = WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.ID,"submitBtn")))
login.click() driver.find_element_by_link_text("我的博客").click()
time.sleep(2)
driver.find_element_by_link_text("发新随笔").click()
time.sleep(2)
for i in range(10):
# 点开编辑器图片
driver.find_element_by_css_selector("img.mceIcon").click()
time.sleep(3)
#定位所有iframe,取第二个
iframe = driver.find_elements_by_tag_name("iframe")[1]
#切换到iframe上
driver.switch_to_frame(iframe)
# print(iframe)
#点击上传文件按钮
# submit = WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"qq-upload-button")))
# submit.click()
time.sleep(3)
driver.find_element_by_class_name("qq-upload-button").click()
# js = 'document.getElementByClassName("qq-upload-button").click();'
# driver.execute_script(js)
# 执行autoit上传文件
# os.system(r"C:\Users\Administrator\Desktop\sendfile.exe")
#批量上传图片
file_name = "F:\\12\\%s.png"%i
os.system(r"C:\Users\Administrator\Desktop\send.exe %s"%file_name)
time.sleep(3)
# 切回到主页面
driver.switch_to_default_content()

selenium3 + python - autoit上传文件的更多相关文章

  1. 关于IE9中webdiriver使用autoit上传文件报错

    在ie9中, type="file"的元素是通过js打开的 webdirver结合autoit上传文件时,会报拒绝访问的错 sciTE编辑器中是这样写的: #include < ...

  2. 关于Autoit上传文件的问题

    Autoit上传文件需要安装两个软件: 使用这个做文件上传时:在代码中需要添加的代码如下: Runtime.getRuntime().exec("d:/zhpg.exe"); D盘 ...

  3. python requests上传文件 tornado 接收文件

    requests 上传文件 import requests def images(): url = 'http://127.0.0.1:8889/upload/image' files = {'fil ...

  4. selenium2用AutoIt上传文件

    1.标签是input,如下图所示: WebElement e1= driver.findElement(By.id("load"));//输入要上传文件的地址e1.sendKeys ...

  5. python实现上传文件到linux指定目录

    今天接到一个小需求,就是想在windows环境下,上传压缩文件到linux指定的目录位置并且解压出来,然后我想了一下,这个可以用python试试写下. 环境:1.linux操作系统一台2.window ...

  6. Python判断上传文件类型

    在开发上传服务时,经常需要对上传的文件进行过滤. 本文为大家提供了python通过文件头判断文件类型的方法,非常实用. 代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  7. Python - Django - 上传文件

    upload.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  8. python+selenium上传文件——input标签

    我们要区分出上传按钮的种类,大体上可以分为两种: 第一种普通上传:将本地文件路径作为一个值,放在input标签中,通过form表单将这个值提交给服务器: 第二种插件上传:是通过Flash.JavaSc ...

  9. Python requests上传文件demo

    #!/usr/bin/env python # -*- coding: utf-8 -*- import requests headers = {'uuid': '5cb572b7-c0a7-4d90 ...

随机推荐

  1. JS权威指南笔记1

    1.JavaScript数据类型可分为两种:原始类型和对象类型.原始类型下又包括数字.字符串和布尔值,以及null和undefined这两个特殊的:对象是属性的集合,且每个属性都有自己的"名 ...

  2. 关于jupyter notebook

    直接点击进行跳转阅读:https://zhuanlan.zhihu.com/p/33105153

  3. iframe 与frameset

    frameset 元素可定义一个框架集.它被用来组织多个窗口(框架).每个框架存有独立的文档.在其最简单的应用中,frameset 元素仅仅会规定在框架集中存在多少列或多少行.您必须使用 cols 或 ...

  4. HDU 4780 Candy Factory

    Candy Factory Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ...

  5. 有一张表里面有上百万的数据,在做查询的时候,如何优化?从数据库端,java端和查询语句上回答

    原文:https://www.2cto.com/database/201612/580140.html 1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 o ...

  6. noip模拟赛 水题

    题目描述 LYK出了道水题. 这个水题是这样的:有两副牌,每副牌都有n张. 对于第一副牌的每张牌长和宽分别是xi和yi.对于第二副牌的每张牌长和宽分别是aj和bj.第一副牌的第i张牌能覆盖第二副牌的第 ...

  7. hdu 5050 java程序求大数最大公约数

    import java.io.*; import java.math.*; import java.util.*; import java.text.*; public class Main { pu ...

  8. BZOJ(2) 1041: [HAOI2008]圆上的整点

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4966  Solved: 2258[Submit][Sta ...

  9. Eclipse查看方法/类调用的方法

    1.(首推)双击选中该方法/类,[Ctrl]+[Alt]+[H](Open Call Hierarchy) 2.(次推)选中该方法/类,[Ctrl]+[Shift]+[G](References) 3 ...

  10. 程序员之---C语言细节20(符号和有符号之间转换、两数相加溢出后数值计算)

    主要内容:无符号和有符号之间转换.两数相加溢出后数值计算 #include <stdio.h> /* 这个函数存在潜在漏洞 */ float sum_elements(float a[], ...