码迷,mamicode.com
首页 > Web开发 > 详细

非input框的自动化文件上传方法

时间:2021-05-24 09:29:25      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:使用方法   回车   path   自动化测试   url   des   baidu   sele   ret   

关于非input框的自动化文件上传方法

(此处用百度的上传图片搜索做演示)

使用第三方库pywinauto (适用于window端)

首先创建driver对象用于打开百度网址,然后定位并点击照相机图标

技术图片

from selenium import webdriver   #从selenium库中导入webdriver包
from time import sleep

driver = webdriver.Chrome()
url = ‘https://www.baidu.com/‘
driver.get(url)
driver.find_element_by_xpath(‘//*[@id="form"]/span[1]/span[1]‘).click()

接着点击“选择文件” 按钮

技术图片

注意:此时不能用selenium自带的click方法,可能是浏览器驱动cookie过期,所以无法做到驱动打开window的文件窗口,然后无法click,会出现报错。

driver.find_element_by_class_name(‘upload-pic‘).click() 

技术图片

这时候就可以用click问题的终极解决方案—js操作click。

大家可以看看我别的帖子“自动化测试click不了情况,及解决方案”(欢迎大佬提意见):https://www.cnblogs.com/zz-winkie/p/14768685.html

sleep(2) 
driver.execute_script("document.getElementsByClassName(‘upload-pic‘)[0].click()")  
sleep(2)  

点击完毕后,会出现文件选择框。就可执行以下操作:

  1. 选择文件需要用到pywinauto库,先安装pywinauto库:pip3 install pywinauto;

安装命令:pip install pywinauto

  1. 导入pywinauto.keyboard库的send_keys方法【此处的send_keys方法和selenium的send_keys方法不一样】

  2. 创建一个操作桌面窗口的对象 【此时可以形象的理解为这里创建了一个人,帮你操作】

  3. 叫这个对象切换窗口到这个文件上传的选择框

  4. 定位到文件路径输入框,click点击它。Send_keys键入文件所在的路径,回车输入完毕

  5. 定位到文件名输入框,type_keys键入文件名 【这里可以使用send_keys,但是要注意使用方法,最好还是用type_keys吧】

  6. 点击打开,完成文件上传

技术图片

具体操作代码如下

from pywinauto.keyboard import send_keys 

# 使用pywinautoc创建一个操作桌面窗口的对象 
win1 = pywinauto.Desktop() 

# 选择文件上传的窗口 窗口句柄默认为‘打开’ 
bow1 = win1[‘打开‘] 

# 选择文件地址输入框,点击激活 
bow1["Toolbar3"].click() 

# 键盘输入上传文件的路径 
send_keys(r"文件的绝对路径") 

 # 键盘输入回车,打开该路径 
send_keys("{VK_RETURN}") 

# 选中文件名输入框,输入文件名 
 bow1["文件名(&N):Edit"].type_keys("520告白日.jpg") 
 # bow1["文件名(&N):Edit"].click()
 # send_keys("xx文件名")

# 点击打开 
bow1["打开(&O)"].click() 

非input框的自动化文件上传方法

标签:使用方法   回车   path   自动化测试   url   des   baidu   sele   ret   

原文地址:https://www.cnblogs.com/zz-winkie/p/14769325.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!