Cyan Blog Cyan Blog
首页
  • Java (opens new window)
  • JUC (opens new window)
  • JVM (opens new window)
  • Redis

    • Redis安装 (opens new window)
    • Redis基础 (opens new window)
    • Redis实战 (opens new window)
    • Redis集群安装 (opens new window)
    • Redis分布式缓存 (opens new window)
    • Redis多级缓存 (opens new window)
    • Redis原理 (opens new window)
  • 管理工具

    • Maven (opens new window)
    • Git (opens new window)
  • SSM

    • Spring (opens new window)
    • SpringBoot (opens new window)
    • Mybatis (opens new window)
    • MybatisPlus (opens new window)
  • 微服务

    • Docker (opens new window)
    • RabbitMQ (opens new window)
    • SpringCloud (opens new window)
    • Dubbo (opens new window)
    • MongoDB (opens new window)
    • Zookeeper (opens new window)
  • Java面试题 (opens new window)
  • JUC面试题 (opens new window)
  • JVM面试题 (opens new window)
  • Linux面试题 (opens new window)
  • SQL面试题 (opens new window)
  • Maven面试题 (opens new window)
  • Redis面试题 (opens new window)
  • SSM面试题 (opens new window)
  • SpringCloud面试题 (opens new window)
  • Linux (opens new window)
  • C++ (opens new window)
  • 数据库

    • MySQL (opens new window)
    • NoSQL (opens new window)
  • 软件测试

    • 软件测试 (opens new window)
  • 加密解密 (opens new window)
  • bilibili字幕提取 (opens new window)
  • 道理 (opens new window)
  • 关于博主

    • Github (opens new window)
    • CSDN (opens new window)
  • 关于本站

    • 如何搭建博客网站 (opens new window)
首页
  • Java (opens new window)
  • JUC (opens new window)
  • JVM (opens new window)
  • Redis

    • Redis安装 (opens new window)
    • Redis基础 (opens new window)
    • Redis实战 (opens new window)
    • Redis集群安装 (opens new window)
    • Redis分布式缓存 (opens new window)
    • Redis多级缓存 (opens new window)
    • Redis原理 (opens new window)
  • 管理工具

    • Maven (opens new window)
    • Git (opens new window)
  • SSM

    • Spring (opens new window)
    • SpringBoot (opens new window)
    • Mybatis (opens new window)
    • MybatisPlus (opens new window)
  • 微服务

    • Docker (opens new window)
    • RabbitMQ (opens new window)
    • SpringCloud (opens new window)
    • Dubbo (opens new window)
    • MongoDB (opens new window)
    • Zookeeper (opens new window)
  • Java面试题 (opens new window)
  • JUC面试题 (opens new window)
  • JVM面试题 (opens new window)
  • Linux面试题 (opens new window)
  • SQL面试题 (opens new window)
  • Maven面试题 (opens new window)
  • Redis面试题 (opens new window)
  • SSM面试题 (opens new window)
  • SpringCloud面试题 (opens new window)
  • Linux (opens new window)
  • C++ (opens new window)
  • 数据库

    • MySQL (opens new window)
    • NoSQL (opens new window)
  • 软件测试

    • 软件测试 (opens new window)
  • 加密解密 (opens new window)
  • bilibili字幕提取 (opens new window)
  • 道理 (opens new window)
  • 关于博主

    • Github (opens new window)
    • CSDN (opens new window)
  • 关于本站

    • 如何搭建博客网站 (opens new window)
  • 设计模式

  • 软件测试

  • 软件测试实验

    • 软件测试
    • WebDriver⭐⭐
    • 定位⭐⭐
    • 浏览器操作⭐
    • 元素基本操作⭐⭐
    • 模拟键鼠操作⭐⭐
    • 消息框操作⭐
    • 切换浏览器窗口⭐
    • SoftwareTest⭐
    • SoftwareTest
    • SoftwareTest
    • SoftwareTest
    • SoftwareTest
    • 计算机
    • 软件测试实验
    2025-03-17
    0
    0
    目录

    SoftwareTest

    # 文件上传

    • 文件上传遇到的问题
      • 文件上传,如果按照手工方式操作,需要操作Windows对话框,而Selenium默认只能操作浏览器里的网页,不能操作Windows对话框。
    • Selenium标准文件上传
      • Selenium针对file类型的input标记封装了现成的文件上传操作。
      • 标准文件上传的“浏览”、“选择文件"或“上传”按钮是文件型按钮,语法如下:
        • <input type="file" name="file_name">
      • 进行文件上传的语法
        • driver.find_element(By.NAME,"file").send_keys(r"D:\111.txt")
    • 文件路径支持绝对路径,不支持相对路径(.或…),需要采用os模块里的path相关函数:(os.getcwd()获取当前目录的绝对路径)
      • filepath=os.path.join(os.path.dirname(os.getcwd()),"temp","111.txt")
      • driver.find_element(By.ID,"file").send_keys(filepath)
    • 语法说明:
      • os.getcwd()用于返回当前工作目录的绝对路径。
      • os.path.dirname(path)函数返回参数的文件或文件夹所在的目录
      • os.path.join(path1,path2…)函数拼接两个或更多的路径
    driver.find_element(By.ID,"file").send_keys("c:\\pp\\222.txt")#预览上传文件
    
    driver.find_element(By.NAME,"submit").click()#点击上传
    
    • 小结

      • Selenium只能针对file类型的input进行文件上传<input type="file" name="file_name">

        • 进行文件上传的语法
          • driver.find_element(By.NAME,"file").send_keys(r"D:\111.txt")
      • 文件路径支持绝对路径,不支持相对路径,用os.getcwd()获取当前目录的绝对路径

    # 文件下载

    • 火狐浏览器下载配置

      • 关于火孤浏览器的参数,可以通过在Firefox浏览器地址栏中输入"about:config"查看,设置好配置信息后,在重新启动浏览器后浏览器就会根据这些配置进行运行或操作。
    • browser.download.folderList:设置Firefox的默认下载文件夹。

      • 0是桌面;1是“我的下载";2是自定义。
    • browser.download.dir:下载文件存放目录。

      • 如果browser.download.folderList=0,那么就不需要设置该参数。
    • browser.download.manager.showWhenStarting:是否显示开始

      • True为显示开始,Flase为不显示开始。
    • browser.helperApps.neverAsk.saveToDisk:对所给文件类型不再弹出框进行询问

      • 在下载文件时,浏览器可能会弹出对应的下载提示框。
      • 这个提示框是浏览器的,不能使用Selenium进行操作,所以可以通过该配置关闭提示。
      • 上面例子中表示:对于下载类型为二进制流的文件不需要弹出提示。
      • 常用的类型有:application/, octet-stream, application/vnd.ms-excel, text/csv, application/zip, application/pdf, application/json,application/msword

    参考http://www.w3school.com.cn/media/media_mimeref.asp

    文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type)
    *(二进制流) application/octet-stream .wav audio/wav
    .ppt application/vnd.ms-powerpoint .xls application/x-xls
    .html .htx .htm text/html .apk application/vnd.android.package-archive
    .jpeg .jpg image/jpeg .cer application/x-x509-ca-cert
    .mp3 audio/mp3 .rpm audio/x-pn-realaudio-plugin
    .mp4 video/mpeg4 .dll application/x-msdownload
    .png image/png .pdf application/pdf
    .zip application/zip .doc application/msword
    .json application/json .xml applicaiton/xml

    # Firefox启动配置(需要在调用WebDriver的Firefox()前配置)

    在调用WebDriver的Firefox()方法时设置信息会作为参数传递给浏览器。Firefox浏览器在启动、运行(下载)时就会根据这些设置信息进行操作:

    • 实例化一个配置对象:配置对象=webdriver.FirefoxProfile()
    • 通过配置对象添加配置信息:配置对象.set_preference(key,value)
    • 以配置对象启动浏览器:webdriver.Firefox(firefox_profile=配置对象)
    obj=webdriver.FirefoxProfile()
    obj.set_preference("browser.download.folderList",2)
    obj.set_preference("browser.download.dir","c:\\pp")
    obj.set_preference("browser.download.manager.showWhenstarting",False)
    obj.set_preference("browser.helperApps.neverAsk.saveToDisk","application/octet-stream")
    driver=webdriver.Firefox(firefox_profile=obj)
    driver.get("https://www.firefox.com.cn/")
    
    driver.find_element(By.XPATH,'//div[aid="download-button-thanks"]/a').click()
    sleep(15)
    driver.quit()
    

    注意:遇到报错的情况,是因为FirefoxProfile()已经弃用,请把上面的代码更改如下:

    from selenium.webdriver.common.options import BaseOptions
    setobj=webdriver.FirefoxOptions()
    setobj.set_preference(“browser.download.folderList”,2)
    setobj.set_preference(“browser.download.dir”,”c:\\temp\\”)
    setobj.set_preference(“browser.download.manager.showWhenStarting”,False)
    setobj.set_preference(“browser.helperApps.neverAsk.saveToDisk”,”application/octet-stream”)
    driver=webdriver.Firefox(Options=setobj)
    
    

    参考来源:https://blog.csdn.net/huaalily/article/details/122492912

    #软件测试
    上次更新: 2025/5/2 14:40:28
    SoftwareTest

    ← SoftwareTest

    最近更新
    01
    项目优化
    05-06
    02
    项目优化
    05-06
    03
    延迟消息
    05-05
    更多文章>
    Theme by Vdoing | Copyright © 2025-2025 Cyan Blog
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式