zoukankan      html  css  js  c++  java
  • selenium(7)-针对两种上传文件方式的实现方案

    示例代码

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8       <input type="file" name="pic" id="pic" />
     9 </body>
    10 </html>

    方法一 :input标签上传文件

    比较简单,可以定位input标签后,直接.send_keys()就可以了

     1 from selenium import webdriver
     2 
     3 driver = webdriver.Chrome("../resources/chromedriver.exe")
     4 
     5 driver.get("www.baidu,com")
     6 driver.maximize_window()
     7 
     8 # 定位上传文件元素input[type=file]
     9 pic = driver.find_element_by_id("pic")
    10 
    11 # 上传文件
    12 pic.send_keys(r"C:/上传文件.html")

    方法二:非input标签上传文件

    # 打开上传网站
    driver.get("https://tinypng.com/")
    paths = Path.cwd().parent
    
    # 触发文件上传的操作
    driver.find_element_by_css_selector("section.target").click()
    
    time.sleep(2)
    # 一级顶层窗口
    dialog = win32gui.FindWindow("#32770", "打开")
    
    # 二级窗口
    comboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None)
    
    # 三级窗口
    comboBox = win32gui.FindWindowEx(comboBoxEx32, 0, "ComboBox", None)
    
    # 四级窗口 -- 文件路径输入区域
    edit = win32gui.FindWindowEx(comboBox, 0, "Edit", None)
    
    # 二级窗口 -- 打开按钮
    button = win32gui.FindWindowEx(dialog, 0, "Button", None)
    
    # 1、输入文件路径
    filepath = f"{paths}\resources\11.png"
    win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filepath)
    
    # 2、点击打开按钮
    win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)

    这个是写死的方法,直接照搬即可,因为涉及了第三方工具去定位Window元素,暂时不展开详解

  • 相关阅读:
    std 迭代器的几种用法
    Cocos2dx3.1+xcode +lua配置
    php获取文件创建时间、修改时间
    如何创建一个基于jquery的编辑器
    封装ajax,简单的模仿jquery提交
    如何实现SQL事务的提交,又不对外进行污染
    .net mvc结合微软提供的FormsAuthenticationTicket登陆
    Http GET、Post方式的请求总结
    post 报文请求接口方法
    zip格式压缩、解压缩(C#)
  • 原文地址:https://www.cnblogs.com/xinhua19/p/13166480.html
Copyright © 2011-2022 走看看