博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
selenium通过send_keys方法上传文件
阅读量:5024 次
发布时间:2019-06-12

本文共 1663 字,大约阅读时间需要 5 分钟。

测试项目中遇到上传文件时打开windows窗口的问题,为了定位windows窗口,引入了pywin32.

如果利用pywin32需要import win32gui,win32con,win32api,还有比较难懂的代码,如下:

handle=win32gui.FindWindow("#32770","打开")ComboBoxEx32 = win32gui.FindWindowEx(handle,0,'ComboBoxEx32',None) ComboBox = win32gui.FindWindowEx(ComboBoxEx32,0,'ComboBox',None)Edit = win32gui.FindWindowEx(ComboBox,0,'Edit',None)  # 上面三句依次寻找对象,直到找到输入框Edit对象的句柄button = win32gui.FindWindowEx(handle,0,'Button',None)  # 确定按钮Bfile_path = 'C:\\Users\\Administrator\\Desktop\\file.txt'win32gui.SendMessage(Edit,win32con.WM_SETTEXT,None,file_path)  # 往输入框输入绝对地址time.sleep(3)win32gui.SendMessage(handle,win32con.WM_COMMAND,1,button)

在学习代码的过程中,发现上传文件方法完全可以简化为一行代码。需要找到上传文件对应的input元素,然后使用send_keys()方法进行上传。

以163邮箱中的“添加附件”功能为例

#coding=utf-8from selenium import webdriverfrom time import sleepdriver=webdriver.Chrome()sleep(3)url = "https://mail.163.com/"driver.get(url)sleep(3)iframe=driver.find_element_by_xpath("//div[@id='normalLoginTab']/div[@class='loginWrap']/div[@id='loginDiv']/iframe")driver.switch_to_frame(iframe)driver.find_element_by_name("email").click()driver.find_element_by_name("email").send_keys("emailaddrl")driver.find_element_by_name("password").click()driver.find_element_by_name("password").send_keys("password")driver.find_element_by_id("dologin").click()sleep(3)#定位'写信'按钮driver.find_element_by_xpath("//div[@id='dvNavTop']/ul[@id='_mail_component_55_55']/li[@id='_mail_component_59_59']/span[@class='oz0']").click()#添加附件file_path="C:\\Users\\Administrator\\Desktop\\2018-11-20_1.jpg"driver.find_element_by_xpath("//div[@class='by0']//input[@class='O0']").send_keys(file_path)

  

转载于:https://www.cnblogs.com/whatcanIdoforyou/p/9989947.html

你可能感兴趣的文章
第三部分shell编程3(shell脚本2)
查看>>
一个基于jQuery的移动端条件选择查询插件(原创)
查看>>
C# Winform 自适应
查看>>
IE阻止个别AC插件的原因及解决办法
查看>>
网络编程原始套接字
查看>>
Centos下源码安装git
查看>>
gulp-rev-append md5版本号
查看>>
IO流之File类
查看>>
sql 基础语句
查看>>
CF717A Festival Organization(第一类斯特林数,斐波那契数列)
查看>>
oracle直接读写ms sqlserver数据库(二)配置透明网关
查看>>
控件发布:div2dropdownlist(div模拟dropdownlist控件)
查看>>
Oracle composite index column ordering
查看>>
大话设计模式随笔四
查看>>
关于 ORA-01439: 要更改数据类型, 则要修改的列必须为空
查看>>
Docker 生态
查看>>
Spring整合jdbc-jdbc模板api详解
查看>>
Tomcat:Can't load AMD 64-bit .dll on a IA 32 platform(问题记录)
查看>>
JAVA 集合JGL
查看>>
Python创建删除文件
查看>>