(10)文件上传、下载
对于Web页面的上传功能实现一般有以下两种方式:
1、普通上传:普通的附件上传是将本地文件的路径作为一个值放在input标签中,通过form表单将 这个值提交给服务器。
2、插件上传:一般是指Flash、Javascript、Ajax等技术所实现的上传功能。
send_keys实现上传
对于通过input标签实现的上传功能,可以将其看作是一个输入框,即通过send_keys()指定本地文件路径的方式实现文件上传。
记得导入:import os
file_path='file:///'+os.path.abspath('upfile.html')
driver.get(file_path)
upfile.html就是文件名称。
AutoIt实现上传
AutoIt目前最新版本是v3,它是一个使用类似BASIC脚本语言的免费软件,它被设计用来进行Windows GUI(图形用户界面)的自动化测试。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。
官方网站:https://www.autoitscript.com/site/。
这种方式不推荐使用,因为生成的exe文件不在python里面,不可控。
代码参考如下:
# coding:utf-8
from selenium import webdriver
import time
# driver = webdriver.Firefox()
driver = webdriver.Chrome()
url = "https://www.baidu.com"
driver.get(url)
driver.maximize_window()
driver.implicitly_wait(20)
# 点击搜索框相机按钮
driver.find_element_by_css_selector("#form > span.bg.s_ipt_wr.quickdelete-wrap > span.soutu-btn").click()
time.sleep(3)
# 文件路径,<input type="file"
driver.find_element_by_class_name("upload-pic").send_keys(r"C:\Users\cr\Desktop\2020_08_26\01.png")
time.sleep(5)
# driver.quit()
文件下载
WebDriver允许我们设置默认的文件下载路径,也就是说,文件会自动下载并且存放到设置的目录中。
为了让Firefox浏览器能实现文件下载,我们需要通过FirefoxProfile()对其做一些设置。
browser.download.folderList
设置成0代表下载到浏览器默认下载路径,设置成2则可以保存到指定目录。
browser.download.manager.showWhenStarting
是否显示开始;True为显示,Flase为不显示。
browser.download.dir
用于指定所下载文件的目录。Os.getcwd()函数不需要传递参数,用于返回当前的目录。 browser.helperApps.neverAsk.saveToDisk
指定要下载页面的Content_type值,“application/octet-stream”为文件的类型。
HTTP Content-type 常用对照表:http://tool.oschina.net/commons
#下载文件
from selenium import webdriver
import os
from time import *
from selenium.webdriver.common.action_chains import ActionChains
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",True)
fp.set_preference("browser.download.useDownloadDir","F:\\下载")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","application/octet-stream")#下载文件的类型
driver = webdriver.Firefox(firefox_profile=fp)
driver.get("https://www.python.org/")#下载文件的URL
driver.implicitly_wait(10)
download = driver.find_element_by_link_text("Downloads")
ActionChains(driver).move_to_element(download).perform()
driver.find_element_by_link_text("Windows").click()
driver.find_element_by_link_text("Latest Python 3 Release - Python 3.7.1").click()
print("正在下载中")
sleep(10)
driver.quit()
参考链接
https://www.cnblogs.com/linxiu-0925/p/9599892.html
https://www.cnblogs.com/yoyoketang/p/7655879.html
网友评论