Python实现对百度云的文件上传(实例讲解)


Posted in Python onOctober 21, 2017

环境准备

python3.6

PyCharm 2017.1.3

Windows环境

框架搭建

selenium3.6

安装方法:

pip install selenium

实现步骤:

一、步骤分析

1、选择“账号密码登录”

2、用户名、密码输入,登录

3、文件上传

注:本文主要介绍利用selenium包下的webdriver加载Firefox浏览器。

二、元素捕捉

利用火狐浏览器firebug插件复制控件的XPATH路径,注:Python3.6对应Firefox版本40.x,暂不支持最新版本50.x。

Python实现对百度云的文件上传(实例讲解)

1、点击“账号密码登录”,获取其源文件

Python实现对百度云的文件上传(实例讲解)

效果图如下:

Python实现对百度云的文件上传(实例讲解)

点击右键,复制Xpath路径:/html/body/div[1]/div[3]/div[6]/div/div[6]/div[2]/a

登录按钮和文件上传同上,获取其相应的Xpath路径

Python实现对百度云的文件上传(实例讲解)

代码:

#选择账号密码登录
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[6]/div[2]/a').click()
# 登录 
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[5]/input').send_keys('username')
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[6]/input').send_keys('password')
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[9]/input').click()

2、登录成功后,点击文件上传,弹出文件对话框

“上传”的Xpath路径为://*[@id="h5Input0"]

代码:

#上传
driver.find_element_by_xpath('//*[@id="h5Input0"]').click()

点击上传按钮,弹出文件对话框

Python实现对百度云的文件上传(实例讲解)

三、AutoIT编写脚本实现上传文件

webdriver无法对文件直接进行操作,所以需要借助AutoIT来实现文件上传

AutoIT下载地址:https://www.autoitscript.com/site

安装AutoIt之后,打开AutoIt Window Info(x64)
Python实现对百度云的文件上传(实例讲解)
Python实现对百度云的文件上传(实例讲解)

4、获取文件上传窗口的控件信息:

打开autoit工具之后,用鼠标将Finder Tool的图标拖到要识别的控件上

获取文本框的控件信息:
Python实现对百度云的文件上传(实例讲解)

获取“打开”按钮的控件信息:
Python实现对百度云的文件上传(实例讲解)

5、编写AutoIt脚本,实现文件上传

1.打开scite script editor

2.代码:

;ControlFocus("title", "text", controlID) Edit1=Edit instance 1
ControlFocus("文件上传", "","Edit1")

;Wait 10 seconds for the Upload window to appear
WinWait("[CLASS:#32770]", "",10)

;Set the File name thext on the Edit field
ControlSetText("文件上传", "", "Edit1", "D:\test.txt")
Sleep(2000)

;Click on the Open button
ControlClick("文件上传", "", "Button1");

3. 将文件保存upfile.au3

Python实现对百度云的文件上传(实例讲解)
4. 使用compile script to exe将上述AutoIt脚本编译为exe文件供python脚本调用
Python实现对百度云的文件上传(实例讲解)

6、最后,使用Python脚本调用AutoIT脚本

#点击上传,打开上传文件窗口
driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[2]/div[2]/div[2]/a[1]/form/input').click()

#使用autoit脚本自动上传文件
#需要导入python的os库文件: import os
os.system("D:/upfile.exe")

完整代码如下:

import os
from selenium import webdriver
import time
class Connect():
 def __init__(self,UserName,PassWord,URL):
  self.UserName = UserName
  self.PassWord = PassWord
  self.URL = URL
 def connect(self):
  self.driver = webdriver.Firefox()
  self.driver.get(self.URL)
  self.driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[6]/div[2]/a').click()
  self.driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[5]/input').send_keys(self.UserName)
  self.driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[6]/input').send_keys(self.PassWord)
  self.driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[6]/div/div[3]/form/p[9]/input').click()
  #设置思考时间
  time.sleep(30)
  sreach_window = self.driver.current_window_handle # 此行代码用来定位当前页面
  self.driver.find_element_by_xpath('//*[@id="h5Input0"]').click()
  os.system(r"C:\Users\zg\Desktop\upfile.exe")
Connect(UserName,PassWord,URL).upload()

以上这篇Python实现对百度云的文件上传(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python在线运行代码助手
Jul 15 Python
深入理解python对json的操作总结
Jan 05 Python
深入理解Python中变量赋值的问题
Jan 12 Python
Python基于回溯法子集树模板解决选排问题示例
Sep 07 Python
python抓取网页中链接的静态图片
Jan 29 Python
Python进度条实时显示处理进度的示例代码
Jan 30 Python
CentOS 7 安装python3.7.1的方法及注意事项
Nov 01 Python
解决Jupyter NoteBook输出的图表太小看不清问题
Apr 16 Python
Python pandas对excel的操作实现示例
Jul 21 Python
Python3爬虫中关于中文分词的详解
Jul 29 Python
Python+unittest+requests 接口自动化测试框架搭建教程
Oct 09 Python
Django集成富文本编辑器summernote的实现步骤
May 31 Python
Python3操作SQL Server数据库(实例讲解)
Oct 21 #Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 #Python
python虚拟环境virtualenv的使用教程
Oct 20 #Python
Python环境搭建之OpenCV的步骤方法
Oct 20 #Python
详解如何用OpenCV + Python 实现人脸识别
Oct 20 #Python
python中的计时器timeit的使用方法
Oct 20 #Python
浅谈Python peewee 使用经验
Oct 20 #Python
You might like
php下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
php 使用array函数实现分页
2015/02/13 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
javascript实现京东登录显示隐藏密码
2020/08/02 Javascript
从零学Python之引用和类属性的初步理解
2014/05/15 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
Django的性能优化实现解析
2019/07/30 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
Python hashlib模块实例使用详解
2019/12/24 Python
python 实现两个npy档案合并
2020/07/01 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
优秀员工自荐信范文
2013/10/05 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
房地产项目合作意向书
2015/05/08 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python