selenium--上传文件

简介: 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:\Users\Administrator\Desktop\21.png')
sleep(2)

相关文章
|
5月前
|
Java 测试技术 API
《手把手教你》系列技巧篇(五十五)-java+ selenium自动化测试-上传文件-下篇(详细教程)
【5月更文挑战第19天】本文介绍了在Web自动化中处理文件上传的挑战,由于Selenium WebDriver不直接支持文件上传,因此需要借助外部工具。文章提到了两种主要的上传方式:基于input框的上传和非input控件的上传。对于非input控件的上传,推荐使用AutoIt,这是一个支持Windows GUI自动化的工具。
75 9
|
5月前
|
Web App开发 机器人 Java
《手把手教你》系列技巧篇(五十四)-java+ selenium自动化测试-上传文件-中篇(详细教程)
【5月更文挑战第18天】本文介绍了在Web自动化测试中处理文件上传的几种方法,特别是针对非`input`控件上传的场景。由于Selenium WebDriver无法操作系统级窗口,因此不能直接支持文件上传。作者提到了四种解决策略:AutoIT、Python的pywin32库、SendKeys库和keybd_event。文章以Java为例,详细阐述了使用Robot类模拟键盘操作来实现非`input`控件的文件上传,包括代码示例和实际项目中的应用。最后,作者分享了一个使用Python和Robot类处理百度图片搜索上传图片的实战案例,并指出有时Chrome浏览器可能需要特定条件才能成功模拟上传。
63 2
|
5月前
|
前端开发 JavaScript 测试技术
《手把手教你》系列技巧篇(五十三)-java+ selenium自动化测试-上传文件-上篇(详细教程)
【5月更文挑战第17天】本文介绍了在Web自动化测试中处理文件上传操作的方法。Selenium的WebDriver未提供直接的API来处理文件上传,因为这涉及到操作系统级别的窗口交互,而WebDriver无法识别非Web元素。文件上传主要分为两类:基于input控件的上传和非input控件的上传。对于input控件,可以直接使用sendKeys()方法输入文件的绝对路径来模拟选择文件。在项目实战中,给出了一个简单的HTML页面和对应的Java代码示例,展示了如何使用Selenium选取并上传文件。
65 0
|
数据采集 人工智能 JavaScript
python3爬虫:使用Selenium带Cookie登录并且模拟进行表单上传文件
前文再续,书接上一回,之前一篇文章我们尝试用百度api智能识别在线验证码进行模拟登录:[Python3.7爬虫:实时api(百度ai)检测验证码模拟登录(Selenium)页面](https://v3u.cn/a_id_134),这回老板又发话了,编辑利用脚本虽然登录成功了,但是有一些表单还是得手动上传,希望能改造成自动化流程。说实话,没毛病,机器能干的事,就没必要麻烦人了,拿人钱财,替人办事,开干。
python3爬虫:使用Selenium带Cookie登录并且模拟进行表单上传文件
|
前端开发
Selenium系列(十一) - 针对两种上传文件方式的实现方案
Selenium系列(十一) - 针对两种上传文件方式的实现方案
217 0
|
7天前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
32 5
|
10天前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
7天前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
24 5
|
11天前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。