• selenium--上传文件


    前戏

    在进行web自动化的时候,经常需要用到上传文件的功能,selenium可以使用send_keys()来上传文件,但是使用send_keys()上传文件有很大的局限性,只能上传input标签的,好多的标签的都上传不了,我们这里使用第三方模块pywin32来模拟上传文件

    实战

    创建一个win32Model.py的文件,写如下代码

    import win32clipboard as w
    import win32con
    
    
    class Clipboard(object):
        #模拟windows设置剪贴板
        #读取剪贴板
        @staticmethod
        def getText():
            #打开剪贴板
            w.OpenClipboard()
    
            #获取剪贴板中的数据
            d=w.GetClipboardData(win32con.CF_TEXT)
    
            #关闭剪贴板
            w.CloseClipboard()
    
            #返回剪贴板数据给调用者
            return d
    
    
    
        #设置剪贴板内容
        @staticmethod
        def setText(aString):
            #打开剪贴板
            w.OpenClipboard()
    
            #清空剪贴板
            w.EmptyClipboard()
    
            #将数据aString写入剪贴板
            w.SetClipboardData(win32con.CF_UNICODETEXT,aString)
    
            #关闭剪贴板
            w.CloseClipboard()

    在创建一个win32Key.py文件,写如下代码

    import win32api
    import win32con
    
    class KeyboardKeys(object):
        #模拟键盘按键类
        VK_CODE={
            'enter':0x0D,
            'ctrl':0x11,
            'v':0x56
        }
    
        @staticmethod
        def keyDown(keyName):
            #按下按键
            win32api.keybd_event(KeyboardKeys.VK_CODE[keyName],0,0,0)
    
    
        @staticmethod
        def keyUp(keyName):
            #释放按键
            win32api.keybd_event(KeyboardKeys.VK_CODE[keyName],0,win32con.KEYEVENTF_KEYUP,0)
    
    
        @staticmethod
        def oneKey(key):
            #模拟单个按键
            KeyboardKeys.keyDown(key)
            KeyboardKeys.keyUp(key)
    
        @staticmethod
        def twoKeys(key1,key2):
            #模拟两个组合键
            KeyboardKeys.keyDown(key1)
            KeyboardKeys.keyDown(key2)
            KeyboardKeys.keyUp(key2)
            KeyboardKeys.keyUp(key1)

    写主函数

    from selenium import webdriver
    from time import sleep
    from page.win32Model import Clipboard
    from page.win32Key import KeyboardKeys
    
    
    def upload(path):
        Clipboard.setText(path)
        sleep(1)
        KeyboardKeys.twoKeys('ctrl','v')
        KeyboardKeys.oneKey('enter')  # 模拟回车
    
    
    driver = webdriver.Chrome()
    driver.get('xxx')
    driver.find_element_by_class_name('el-button').click()
    driver.maximize_window()
    sleep(2)
    driver.find_element_by_xpath('xxx').click()
    upload(r'C:UsersAdministratorDesktop21.png')
    sleep(2)
  • 相关阅读:
    Paxos算法理解
    JavaScript笔记
    JVM基础知识(二)
    JVM基础知识(一)
    书单
    centos6.3环境下升级python及MySQLdb的安装
    winform中button的image属性无法更改
    未能找到任何适合于指定的区域性或非特定区域性的资源
    Spring注解开发第十二讲--@Profile注解讲解
    Spring注解驱动第十一讲--引用Spring底层组件
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/11173583.html
Copyright © 2020-2023  润新知