Python实现对百度云的文件上传(实例讲解)
作者:jingxian 发布时间:2022-04-16 03:15:46
环境准备
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。
1、点击“账号密码登录”,获取其源文件
效果图如下:
点击右键,复制Xpath路径:/html/body/div[1]/div[3]/div[6]/div/div[6]/div[2]/a
登录按钮和文件上传同上,获取其相应的Xpath路径
代码:
#选择账号密码登录
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()
点击上传按钮,弹出文件对话框
三、AutoIT编写脚本实现上传文件
webdriver无法对文件直接进行操作,所以需要借助AutoIT来实现文件上传
AutoIT下载地址:https://www.autoitscript.com/site
安装AutoIt之后,打开AutoIt Window Info(x64)
4、获取文件上传窗口的控件信息:
打开autoit工具之后,用鼠标将Finder Tool的图标拖到要识别的控件上
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
4. 使用compile script to exe将上述AutoIt脚本编译为exe文件供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()
来源:http://www.cnblogs.com/zhang-zhi/p/7680444.html


猜你喜欢
- 匹配文本并在其上一行追加文本问题描述Python匹配文本并在其上一行追加文本test.txtabcde1.读进列表后覆盖原文件 d
- 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。一个循环在C语言等其他
- 本文实例讲述了go语言使用第三方包 json化结构体操作。分享给大家供大家参考,具体如下:前提条件:安装好操作系统对应的gitgo get
- 1,关闭eslint这里只说vue-cli脚手架的关闭方法,其实很简单,就是把 build/webpack.base.conf.js 配置文
- 前言:上一篇文章详细介绍windows下MySQL安装教程,这篇就从最基本的安装MySQL-Linux环境开始,感兴趣的小伙伴可以关注我,系
- 一、密码式给数据库起一个随机复杂的名称,避免被猜到被下载,这种方式在以前很流行,因为大家都对自己的代码很有自信。但随着错误提示对数据库地址的
- 在SQL查询分析器执行以下代码就可以了。01.declare @t varchar(255),@c varchar(255) 02.decl
- 在腾讯云上面搭建的mysql使用开发的电脑上navicat进行访问时总是特别的慢,原来是Mysql会对请求的地址进行域名解析,开发的电脑并没
- 本文实例为大家分享了Python KNN分类算法的具体代码,供大家参考,具体内容如下KNN分类算法应该算得上是机器学习中最简单的分类算法了,
- jTopo 帮助说明网站http://www.jtopo.com/index.html使用例子:http://www.jtopo.com/d
- 本文实例为大家分享了python pygame实现五子棋双人联机的具体代码,供大家参考,具体内容如下同一局域网内,服务端开启时,另一机器将I
- 写在前面在用pd.read_csv读取数据集时,我有2个疑问?1是:写相对路径还是绝对路径。2是:相对路径,绝对路径怎么写。这篇文章就是解决
- Numpy数组转置很容易,两种写法np_array = np.array([[1, 2], [3, 4]]) np_array.transp
- PyQt5中信号与槽可以说是对事件处理机制的高级封装,如果说事件是用来创建窗口控件的,那么信号与槽就是用来对这个控件进行使用的,比如一个按钮
- 三重相等运算符 === 严格检查2个值是否相同:1 === 1; // => true1 === '1';
- django处理Ajax跨域访问使用javascript进行ajax访问的时候,出现如下错误出错原因:javascript处于安全考虑,不允
- 在熟悉了Python的基本安装与环境配置之后,我们来看看Python的基本运算操作。1. 基本运算>>>6 # 这里的‘#
- 说起模板引擎,很多人会认为这是后台的东西(如PHP的Smarty、Java的Velocity),跟前端没有关系。然而,随着前端的逻辑变得越来
- 遇到的问题网上找了一些代码,都是只能建立一次socket传输一张图片,然后断开重新连重新传。而建立一次socket代价不小,反复建立会非常消
- 1. 面向对象编程 OOP ( Object Oriented Programming) 即面向对象编程。面向对象编程是一种&nb