python在selenium网页模拟运行过程中需要打开文件夹上传文件的情况的解决方法

embedded/2024/10/18 9:19:10/

selenium运行过程中,可能会遇到网页需要上传文件图片等情况,有时可以直接用selenium中send_keys直接上传,但是有时不行,这时我们需要用到另一个包,pywinauto
具体的代码如下,

python">import pywinauto
# pywinauto模拟操作键盘,需要使用到 pywinauto.keyboard.send_keys这个方法
# 需要注意的是Pywinauto库的send_keys方法与selenium库的send_keys方法不同,输入的键盘操作关键字存在较大差异
from pywinauto.keyboard import send_keys
folder = 'xxxxx' #文件夹地址
file = 'xxxxx' #文件名
# 使用pywinautoc创建一个操作桌面窗口的对象
win1 = pywinauto.Desktop()
# 选择文件上传的窗口 窗口句柄默认为‘打开’
bow1 = win1['打开']
# 选择文件地址输入框,点击激活
bow1["Toolbar3"].click()
# 键盘输入上传文件的路径
send_keys(folder)
# 键盘输入回车,打开该路径
send_keys("{VK_RETURN}")
# 选中文件名输入框,输入文件名
bow1["文件名(&N):Edit"].type_keys(file)
# 点击打开
bow1["打开(&O)"].click()

运行情况是模拟手动点击上传按钮,在文件夹中选择文件。期间不能手动触碰鼠标键盘。
因为是在selenium模拟网页运行的代码中的,所以上面需要连接
web.find_element(By.XPATH,‘xxxxxxxxxxx’).click()等使用,
就是说,先用selenium模拟点击上传按钮,然后再使用上面的代码模拟上传文件。
代码中只需要修改folder和file,其他的不要动。


http://www.ppmy.cn/embedded/6479.html

相关文章

linux实用C++库之json

目录 1 介绍2 内容 1 介绍 本博客用来记录linux下json库的基本使用。 2 内容 安装: 使用: CMakeLists.txt编写:

web自动化系列-selenium方法和属性的使用(九)

继续介绍selenium中的一些方法和属性 ,下面的这些方法和前面已经介绍过的clear 、send_keys等都是在一个类中,即WebElement 。我们其实使用很多方法都是在这个类中 。 1.方法和属性 类型方法/属性说明场景属性size返回元素的大小/属性text返回元素的文…

java解决常见递归问题

最基本的,斐波那契数列,阶乘(0,1的阶乘均为1) 返回字母“x”第一次出现的位置 使用递归编写一个函数,读取一个字符串,返回字母“x”第一次出现的位置。例如,字符串 "abcdefgh…

项目实践---贪吃蛇游戏的实现

上一章,我们已经分析了贪吃蛇的具体内容,包括它是如何实现的,怎样完成这个项目的,其中就提到了 贪吃蛇有三个代码:一个是测试代码,一个是头文件代码,还有一个是主函数代码。那么今天我们就来讲一…

从OWASP API Security TOP 10谈API安全

1.前言 应用程序编程接口(API)是当今应用驱动世界创新的一个基本元素。从银行、零售、运输到物联网、 自动驾驶汽车、智慧城市,API 是现代移动、SaaS 和 web 应用程序的重要组成部分,可以在面向客 户、面向合作伙伴和内部的应用程…

单片机之从C语言基础到专家编程 - 4 C语言基础 - 4.12枚举

枚举(enumeration)是C语言的一种重要数据类型,由用户自定义一组命名的整数常量。使用枚举可以使程序具有可读性及可维护性。 1 定义枚举类型 在C语言中,使用enum关键字来定义枚举类型。下面以LED为例,介绍枚举类型的…

Jmeter 测试-跨线程调用变量

1、Jmeter中线程运行规则 ①各个线程组是完全独立的,每个线程组是不同的业务,互不影响 ②线程组中的每个线程也是完全独立 ③线程组中的每个线程,都是从上往下执行,完成一轮循环后,继续下一轮循环 ④存在业务流或者…

Qt 创建控件的两种方式

目录 Qt 创建控件的两种方式 通过ui界面创建控件 通过代码方式创建控件 Qt 创建控件的两种方式 通过ui界面创建控件 这里当然我们是需要先有一个项目的,按照我们之前创建项目的步骤,我们可以先创建一个 Widget 的项目,但是 MainWindow 也…