zoukankan      html  css  js  c++  java
  • Selenium系列(十一)

    如果你还想从头学起Selenium,可以看看这个系列的文章哦!

    https://www.cnblogs.com/poloyy/category/1680176.html

    其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...)

    首先,将下面html代码保存到一个文件中

    后续第一种上传文件方式的代码小案例都是访问此html的

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
          <input type="file" name="pic" id="pic" />
    </body>
    </html>

    方式一:input标签上传文件

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

    # !/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    """
    __title__  =
    __Time__   = 2020/3/25 17:52
    __Author__ = 小菠萝测试笔记
    __Blog__   = https://www.cnblogs.com/poloyy/
    """
    from selenium import webdriver
    
    driver = webdriver.Chrome("../resources/chromedriver.exe")
    
    # 需要自己修改路径
    driver.get("file:///C://上传文件.html")
    driver.maximize_window()
    
    # 定位上传文件元素input[type=file]
    pic = driver.find_element_by_id("pic")
    
    # 上传文件
    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元素,暂时不展开详解

  • 相关阅读:
    c#实现串口操作 SerialPort
    ASP.NET Core 上传大文件无法接收的问题
    如何将qlv格式的腾讯视频转换为mp4格式
    C#中HttpWebRequest的GetRequestStream执行的效率太低,甚至偶尔死掉
    LGPL 与GPL的区别
    ffmpeg
    HTTP协议/RTSP协议/RTMP协议的区别
    C#写的CRC16检验算法
    VS里属性窗口中的生成操作释义
    iOS:APNS推送主要代码
  • 原文地址:https://www.cnblogs.com/poloyy/p/12607930.html
Copyright © 2011-2022 走看看