zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    ubuntu搭建tftp服务器
    【转】Android屏幕适配全攻略(最权威的官方适配指导)
    【转】Android开发相关的Blog推荐
    【转】Android开源项目
    【转】Android使用SQLite数据库版本升级
    【转】Java 集合系列目录(Category)
    【转】使用AIDL实现进程间的通信之复杂类型传递
    谷歌设计师的MATERIAL DESIGN实践心得
    【转】MATERIAL DESIGN设计规范学习心得
    【转】android MD设计
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/11173583.html
Copyright © 2011-2022 走看看