selenium + python 非 input 标签的文件上传操作

selenium + python 非 input 标签的文件上传操作

前言

  对于网站的图片上传相信每个人都有过体会,imput 标签上传图片很简单,一段send_keys(Path)搞定,
  但是那种不是 input 标签的怎么办呢?
  接下来小编就介绍一下怎么处理! ↓ ↓ ↓ ↓ ↓ ↓
在这里插入图片描述

input标签上传文件

   代码跟简单,send_keys 就能满足他。即便是使用 IDE录制脚本他也是使用Send_keys函数。
在这里插入图片描述
   这是input 标签的样子
在这里插入图片描述

   这是 input 标签的源码。写的比较简陋!

在这里插入图片描述

非 input 标签上传文件_介绍

   给你看一下特殊的标签,只看能看清的地方就好了,其他的不用看。
在这里插入图片描述
   很清楚的可以看到,这个按钮是 标签,点击后弹出一个文件选择框,选择文件。
文件选择框 ↓
在这里插入图片描述

手动操作是怎么做的?

  1. 选择图片
  2. 点击打开按钮
  3. 图片上传成功

还可以这样做?

  1. 复制好图片路径
  2. 将路径复制到文件名的文本框中
  3. 敲一下回车
  4. 图片上传成功

  有了想法距离实现还远吗?

非 input 标签上传文件_解决_python_3.7_32位

方式1 是用鼠标做的,方式2 是使用键盘做到的。
我就介绍一下键盘操作:

# 这两个是python自带的插件,win32api是用来模拟键盘操作,win32con是用来控制键盘
import win32api 
import win32con

  算啦 算啦 ,本来想写的,但是看人家写的,我在复制过来没多大意义。

  win32api参考地址:https://blog.csdn.net/polyhedronx/article/details/81988948

  其实不看也可以,我已经把代码粘出来了。

发送按钮代码

def UpLoad_File(webEle, filePath, check_Input):
    """
    使用 python 的 win32api,win32con 模拟按键输入,实现文件上传操作。
    :param webEle: 页面中的上传文件按钮,是已经获取到的对象
    :param filePath: 要上传的文件地址,绝对路径。如:D:\\timg (1).jpg
    :param check_Input:检查input标签中是否有值 #仅用来检查,在return 处调用一次,多余可删除
    :return: 成功返回:上传文件后的地址,失败返回:""
    """
    pyperclip.copy(filePath)  # 复制文件路径到剪切板
    webEle.click()  # 点击上传图片按钮
    time.sleep(3)  # 等待程序加载 时间 看你电脑的速度 单位(秒)
    # 发送 ctrl(17) + V(86)按钮
    win32api.keybd_event(17, 0, 0, 0)
    win32api.keybd_event(86, 0, 0, 0)
    win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)  # 松开按键
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)
    win32api.keybd_event(13, 0, 0, 0)  # (回车)
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)  # 松开按键
    win32api.keybd_event(13, 0, 0, 0)  # (回车)
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(2)
    return check_Input.get_attribute("value") 

调用函数代码

		# 这个是上图看到的那个<a> 标签获取到的对象
        f1 = driver.find_element_by_xpath(
            u"(.//*[normalize-space(text()) and normalize-space(.)='文章标题图:'])[1]/following::i[1]")
        # #仅用来检查,多余可删除
        i1 = driver.find_element_by_xpath(u"//input[@name='articleTitlePic']")
        UpLoad_File(f1, "D:\\timg (1).jpg", i1)

注意

  1 - 上面代码可以对两种方式上传文件使用!
  2 - 上面代码亲测可用!
  3 - 在无浏览器窗口时不能使用!

在这里插入图片描述

  没了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值