Python实现对百度云的文件上传
环境准备
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脚本,实现文件上传
- 打开scite script editor
- 代码:
;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://blog.csdn.net/justheretobe/article/details/50939021
Python实现对百度云的文件上传的更多相关文章
- 构建基于阿里云OSS文件上传服务
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...
- 记一次阿里云oss文件上传服务假死
引言 记得以前刚开始学习web项目的时候,经常涉及到需要上传图片啥的,那时候都是把图片上传到当前项目文件夹下面,每次项目一重启图片就丢了.虽然可以通过修改/tomcat/conf/server.xml ...
- 【Selenium04篇】python+selenium实现Web自动化:文件上传,Cookie操作,调用 JavaScript,窗口截图
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第四篇博 ...
- python运维开发(二十一)----文件上传和验证码+session
内容目录: 文件上传 验证码+session 文件和图片的上传功能 HTML Form表单提交,实例展示 views 代码 HTML ajax提交 原生ajax提交,XMLHttpRequest方式上 ...
- SpringBoot整合阿里云OSS文件上传、下载、查看、删除
1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...
- SpringBoot完美配置阿里云的文件上传
新建一个config类 AliyunOSS.java @Configuration @Data public class AliyunOSS { private OSSClient ossClient ...
- 老男孩 python学习自修第二十二天【文件上传与下载】
1.使用socket实现文件上传 server.py #!/usr/bin/env python # _*_ coding:UTF-8 _*_ import os import SocketServe ...
- redisTemplate实现轻量级消息队列, 异步处理excel并实现腾讯云cos文件上传下载
背景 公司项目有个需求, 前端上传excel文件, 后端读取数据.处理数据.返回错误数据, 最简单的方式同步处理, 客户端上传文件后一直阻塞等待响应, 但用户体验无疑很差, 处理数据可能十分耗时, 没 ...
- [转]腾讯云Linux云服务器文件上传利器——WinSCP
本文转自:http://bbs.qcloud.com/thread-4379-1-1.html WinSCP简介 WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端.同时支持S ...
随机推荐
- mysql用户权限操作
mysql用户权限操作1.创建用户mysql -urootcreate database zabbix default charset utf8;grant all on zabbix.* to za ...
- 索引是否也能提高UPDATE,DELETE,INSERT速度 解释
insert 不会提高,insert 用不到索引,只会增加维护索引的时间. update ,更新索引列不会提高,少量更新非索引列,会有提高 : 更新索引列,索引要重新维护,更新非索引列,倒是没什么影响 ...
- html5 app开发实例 Ajax跨域访问C# webservices服务
通过几天的研究效果,如果在vs2010工具上通过webservice还是比较简单的,毕竟是一个项目. 如果您想通过HTML5 做出来的移动APP去访问c#做出来的webservice,那么就没那么简单 ...
- 使用adbWireless无线调试Android真机设备[转]
开发Android的朋友都知道,真机调试需要把手机与PC相连,然后把应用部署到真机上进行安装和调试.长长的USB线显得很麻烦,而且如果需要USB接口与其他设备连接的话显得很不方便.今天介绍一种不通过U ...
- jQuery-名称符号$与其他库函数冲突
1.通过全名替代简写的方式来使用 jQuery jQuery("button").click(function(){ jQuery("p").text(&quo ...
- 初学基础python记录
1.对于python来说,最重要的就是缩进.相当于其他语言的{}中括号. 2.转义快捷等 alt+p和alt+n来复制上下一行.变量使用时得先赋值,且大小写敏感,遵循变量命名规则.Python还允许用 ...
- NopCommerce 3.80框架研究(二) MVC 表示层与数据验证
表示层框架结构 /Views/Shared/_Root.Head.cshtml /Views/Shared/_Root.cshtml /Views/Shared/_ColumnsOne.cshtml ...
- pat甲级1123
1123 Is It a Complete AVL Tree(30 分) An AVL tree is a self-balancing binary search tree. In an AVL t ...
- POJ 3469 Dual Core CPU(最小割模型的建立)
分析: 这类问题的一遍描述,把一些对象分成两组,划分有一些代价,问最小代价.一般性的思路是, 把这两组看成是S点和T点,把划分的代价和割边的容量对应起来求最小割. 把S和可模版tem之间到达关系看作是 ...
- iOS 不同的崩溃类型
http://m.blog.csdn.net/kangguang/article/details/62501490 用汇编语言编写的软件跟用脚本或标记语言编写的Web应用的差别在于,前者在出现问题时会 ...