Selenium基础 — 文件上传&文件下载

这篇具有很好参考价值的文章主要介绍了Selenium基础 — 文件上传&文件下载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件上传

说明:
文件上传是web页面上很常见的一个功能,用脚本去实现文件上传很简单。
一般场景:在页面中的上传按钮是一个<input>标签,其中type属性为type="file",这种可以用selenium提供的send_keys()方法轻松解决。
示例:
页面代码片段:

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
</head>
<body>
<fieldset>
    <legend>文件上传</legend>
    <form action="">
        <input type="file" name="upfile" value="">
    </form>
</fieldset>
</fieldset>
</body>
</html>

脚本代码:

"""
1.学习目标:
    掌握文件上传功能操作
2.操作步骤
    此上传方式适用大多数情况。
    上传文件标签为input类型,并且type=file时可使用此方式上传。
    使用send_keys(“需要上传的文件的路径")
3.需求
    在页面中,实现文件上传
4.总结
    4.1 在上传文件的时候,对文件类型,大小等做充分验证。
    4.2 在执行上传文件脚本时,加一定的等待时间,sleep()。
    4.3 大多数上传文件都是input类型并且type=file。
    4.4 对于非input标签的上传文件功能,使用Sendkeys库来实现。
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os
 
# 2.打开浏览器
driver = webdriver.Chrome()
 
# 3.打开注册A页面
url = "file:///" + os.path.abspath("./1.html")
driver.get(url)
sleep(2)
 
# 4.上传文件
# 4.1 定位上传文件按钮
upfile = driver.find_element_by_name("upfile")
 
# 4.2 使用send_keys方法上传文件
upfile.send_keys(r"C:\Users\L\Desktop\测试上传文件.txt")
sleep(5)
 
# 5.关闭浏览器
driver.quit()

 提示:
另外一种非<input>标签的上传文件按钮,实现起来比较困难,可以借助autoit工具或者SendKeys第三方库来实现。
上传过程一般要打开一个系统的window 窗口,从窗口选择本地文件添加。所以,一般会卡在如何操作本地window 窗口。

总结:
其实上传本地文件没我们想的那么复杂,只要定位上传按钮,通send_keys()方法添加本地文件路径就可以了。绝对路径和相对路径都可以,关键是上传的文件存在。
小练习:使用邮箱给其他人发送一封代附件的邮件。添加附件,就是上传文件。邮件正文的操作就是操作iframe元素。 

文件下载

使用selenium.webdriver实现下载文件功能,只需要配置一下浏览器的参数即可实现。
1、Firefox浏览器文件下载
步骤:

  • 对于Firefox,需要我们设置其Profile:通过FirefoxProfile()方法创建一个Firefox自定义配置信息实例。
  • 设置Firefox浏览器下载相关的自定义配置信息到Profile实例中。
  • 启动Firefox,并把自定义配置Profile实例存储到浏览器对象中。
  • 访问下载网站,进行下载。

 实例:
需求:下载Firefox浏览器驱动文件

"""
1.学习目标
    了解使用火狐浏览器实现文件下载
2.操作步骤(语法)
    2.1 创建Firefox浏览器配置信息对象
        webdriver.FirefoxProfile()
    2.2 设置Firefox浏览器下载相关的自定义配置信息
    2.3 创建Firefox浏览器对象,并把自定义配置信息存储到浏览器对象中
    2.4 访问下载网站
    2.5 进行下载
3.需求
    使用火狐浏览器实现文件下载
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
 
# 2.创建Firefox浏览器配置信息对象,用于存放自定义配置
profile = webdriver.FirefoxProfile()
 
# 3. 配置profile下载相关信息
"""
3.1 指定自定义下载路径,默认只会自动创建一级目录,
    如果指定了多级不存在的目录,将会下载到默认路径,
    如下就是定义了多级不存在的目录,文件就下载到了火狐浏览器的默认下载目录中
    我的火狐默认下载路径:C:\\Users\\L\\Downloads
"""
profile.set_preference('browser.download.dir', 'f:\\Download\\123\\456')
 
"""
3.2 将browser.download.folderList设置为:
    设置成 0 表示下载到桌面
    设置成 1 表示下载到浏览器默认下载路径
    设置成 2 表示使用自定义下载路径
    
    和上面browser.download.dir配合使用,如果设置成0和1
    上面的配置基本无用。
"""
profile.set_preference('browser.download.folderList', 2)
 
"""
3.3 browser.helperApps.alwaysAsk.force:
    对于未知的 MIME 类型文件会弹出窗口让用户处理,
    默认值为true,设定为False,
    表示不会记录打开未知 MIME 类型文件的方式
"""
profile.set_preference("browser.helperApps.alwaysAsk.force", False)
 
"""
3.4 在开始下载时是否显示下载管理器
    设定为true,则在用户启动下载的时候显示Firefox浏览器的文件下载窗口
    否则不显示文件下载窗口。
"""
profile.set_preference('browser.download.manager.showWhenStarting', False)
 
"""
3.5 设定为 False 会把下载框进行隐藏
"""
profile.set_preference("browser.download.manager.useWindow", False)
 
"""
3.6 默认值为 true,设定为 False 表示不获取焦点
"""
profile.set_preference("browser.download.manager. focusWhenStarting", False)
 
"""
3.7 下载.exe文件弹出警告,
    默认值是 true,设定为False 则不会弹出警告框
"""
profile.set_preference("browser.download.manager.alertOnEXEOpen", False)
 
"""
3.8 browser.helperApps.neverAsk.openFile:
    表示直接打开下载文件,不显示确认框
    默认值为空字符串,下行代码行设定了多种文件的 MIME类型.
    例如:
        application/exe,表示.exe类型的文件,
        application/excel表示 Excel 类型的文件
"""
profile.set_preference("browser.helperApps.neverAsk.openFile", "application/zip")
 
"""
3.9 对所给出文件类型不再弹出框进行询问,直接保存到本地磁盘
"""
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/zip, application/octet-stream')
"""
其他可选文件类型:
    application/a-gzip
    application/x-gzip,
    application/zip,
    application/x-gtar,
    text/plain,
    application/x-compressed,
    application/octet-stream,
    application/pdf
"""
 
"""
3.10 browser.download.manager.showAlertOnComplete:
    设定下载文件结束后是否显示下载完成提示框,
    默认为true,设定为False,
    表示下载完成后不显示下载完成提示框
"""
profile.set_preference("browser.download.manager. showAlertOnComplete", False)
 
"""
3.11 browser.download.manager.closeWhenDone:
    设定下载结束后是否自动关闭下载框,
    默认值为true,设定为False,
    表示不关闭下载管理器.
"""
profile.set_preference("browser.download.manager.closeWhenDone", False)
 
# 4. 创建浏览器对象
# 启动浏览器时,通过firefox_profile参数
# 将自动以配置添加到FirefoxProfile对象中
driver = webdriver.Firefox(firefox_profile=profile)
 
# 5. 访问Firefox浏览器驱动文件下载网址
driver.get("https://npm.taobao.org/mirrors/geckodriver/v0.20.0/")
sleep(3)
 
# 6. 定位下载链接,并点击下载
file = driver.find_element_by_link_text("geckodriver-v0.20.0-win64.zip")
file.click()
sleep(3)
 
# 7.关闭浏览器
driver.quit()

2、Chrome浏览器文件下载
示例:
Chrome浏览器,设置其options:

  1. download.default_directory:设置下载路径。
  2. profile.default_content_settings.popups:设置为0禁止弹出窗口。
"""
1.学习目标
    了解使用谷歌浏览器实现文件下载
2.操作步骤(
    2.1 创建谷歌浏览器加载项对象
        webdriver.ChromeOptions()
    2.2 定义Chrome浏览器加载项参数
    2.3 将加载项参数添加到谷歌浏览器加载项对象中
        options.add_experimental_option('prefs', prefs)
    2.4 创建Chrome浏览器对象,并把自定义加载项对象存储到浏览器对象中
    2.5 访问下载网站
    2.6 进行下载
3.需求
    使用谷歌浏览器实现文件下载
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
 
# 2. 创建谷歌浏览器加载项对象
options = webdriver.ChromeOptions()
 
# 3. 定义加载项参数
prefs = {'profile.default_content_settings.popups': 0,
         'download.default_directory': 'f:\\'}
 
# 4.将加载项参数添加到谷歌浏览器加载项对象中
options.add_experimental_option('prefs', prefs)
 
# 5. 创建浏览器对象,并添加加载项对象
driver = webdriver.Chrome(options=options)
 
# 6. 方位下载页面
driver.get('https://npm.taobao.org/mirrors/chromedriver/80.0.3987.106/')
 
# 7. 点击下载
driver.find_element_by_link_text("chromedriver_win32.zip").click()
sleep(3)
 
# 8.关闭浏览器
driver.quit()

说明:
chrome 其他常用启动参数
需要用的时候直接添加到配置信息中。

  • 取消浏览器下载时保存路径弹框
"download.prompt_for_download": False,
"download.directory_upgrade": True,
    
"""
'profile.default_content_settings.popups': 0
是禁止弹出所有窗口
"""
  • 是否提示安全警告
# 下载xml文件时,会弹出“此文件类型可能会损害您的计算机”的提示。
# 而不显示消息警告,需要添加下面配置,使用Selenium chromedriver禁用此弹出窗口。
"safebrowsing.enabled": True

 

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

selenium 下载文件,selenium,测试工具,appium,测试用例,单元测试,功能测试,postman

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  文章来源地址https://www.toymoban.com/news/detail-781959.html

到了这里,关于Selenium基础 — 文件上传&文件下载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决selenium遇到火狐浏览器自动打开下载文件

       这个图标发生变化说明可以了,不用在意后面的文字,这样设置就已经生效!

    2024年02月11日
    浏览(71)
  • 下载PDF文件时的Selenium选项设置详解

    使用Selenium下载PDF文件时,设置下载选项是一个重要的步骤,它可以确保文件被正确保存,并在需要时进行自动打开或禁用内置PDF查看器。本文将介绍一些常见的选项设置,以帮助你顺利下载和处理PDF文件。 在使用Selenium下载文件时,我们可以通过设置webdriver.ChromeOptions()中的

    2024年02月05日
    浏览(66)
  • selenium设置(有界面/无界面浏览器)下载文件路径

    配置方法是添加 download.default_directory ,如: 对于无界面浏览器,为了安全,默认是不允许在无界面下进行下载文件到本地的操作的,但是可以通过配置进行修改,详细请参考:https://stackoverflow.com/questions/45631715/downloading-with-chrome-headless-and-selenium

    2024年02月17日
    浏览(39)
  • 解决selenium使用chrome下载文件(如pdf)时,反而打开浏览器的预览界面

    在初始化浏览器的时候,添加以下配置即可: 使用如下程序初始化,可以避免很多问题: 在需要下载文件时,只需要直接 browser.get(网络文件URL) 即可直接下载文件到配置的 \\\"C:UsersUser4Downloads\\\" 路径下:

    2024年02月04日
    浏览(67)
  • 【 Python足彩网站赔率数据文件自动下载(Tkinter+BeautifulSoup+Selenium隐藏浏览器界面,双线程)】

    朋友为了分析足彩的实时赔率,需要每隔一段时间自动下载网站上的excel数据。因此开发了这款软件。 总共就3个代码块,以下是完整源代码。 1.第一步 :创建应用程序界面 2第二步 :获所有需要下载的URL并添加到列表。循环列表。 3第三步 :下载Excel文件。因为是无头浏览器

    2024年01月18日
    浏览(125)
  • SpringBoot+vue文件上传&下载&预览&大文件分片上传&文件上传进度

    SpringBoot+vue 大文件分片下载 Blob File spark-md5根据文件内容生成hash 大文件分片上传(批量并发,手动上传)vue组件封装-form组件 vue上传大文件/视频前后端(java)代码 springboot+vue自定义上传图片及视频 SpringBoot + VUE实现前台上传文件获取实时进度( 使用commons-fileupload设置上传监听

    2024年02月05日
    浏览(76)
  • 下载文件 + 上传文件

    记录一下js实现下载文件的方式 下载文件 方式一:a 链接下载:模拟a链接的点击,把后端返回的下载地址设置给a链接的href属性 2. 文件流下载 前端接收 type: “application/octet-stream“ 格式的数据并下载,还有后端既返回octet-stream还返回JSON数据时的处理方法, 后端改了一下文件下

    2024年02月12日
    浏览(54)
  • 前端常用的上传下载文件的几种方式,直接上传、下载文件,读取.xlsx文件数据,导出.xlsx数据

    1.1根据文件流Blob进行下载 1.2根据下载文件链接直接进行下载 html

    2024年02月12日
    浏览(45)
  • Flutter:文件上传与下载(下载后预览)

    dio是一个强大的Dart Http请求库,提供了丰富的功能和易于使用的API,支持文件上传和下载。 这个就不介绍了,网上有很多的封装案例。 简介 适用于iOS,Android,MacOS,Windows和Linux的后台文件下载器和上传器。 官方文档 https://pub-web.flutter-io.cn/packages/background_downloader 安装 注意:

    2024年02月13日
    浏览(64)
  • 【Postman】 测试文件上传、下载 一、使用PostMan测试文件上传接口

    1、、选择post请求方式,输入请求地址   二、填写Headers  一般是自动生成的 Key:Content-Type Value:multipart/form-data 如下图   三、填写body 选择form-data     然后选择文件file    点击添加文件,最后发送即可   1、反馈异常,先排查 Headers中 Conten-Type 与 ”文件类型“是否匹配  

    2024年02月11日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包