Selenium上传文件

Selenium上传分为input标签和非input标签,分别介绍总结下:

一、input标签

 input标签可以直接使用send_keys(文件地址)上传文件

示例:

el = driver.find_element_by_id('fileid')

el.send_keys(r"F:\Python\testcase.txt")

二、 非input标签(如a标签,div标签,button标签等),无法通过selenium解决,面对系统弹出框,需要找到能调用系统api操作。以下介绍使用autoit工具解决。(autoit window Info可以对于windows系统进行页面元素识别定位。

思路是:

a. 识别使用aotoit工具对上传文件弹框的文件名输入框和上传按钮进行定位,取出文件名输入框和上传按钮的classname

b. 打开SciTE Script Editor,根据步骤a取出的classname编写、修改脚本,生成的文件格式为.au3

c. 打开Compile Script to.exe(64)即Auto2Exe v3 将.au3文件转换成.exe文件

d. os.system(r"C:\upfile.exe")【此代码要在打开文件上传弹出框后,目的是让文件上传弹出框为当前窗口】

具体案例:

此上传明显是非input标签,使用autoit具体步骤为:

1. chrome浏览器打开上传文件弹出框

2. 开始菜单-打开autoIt Window Info

3. 拖拽autoIt Window Info中Finder Tool图标至上传文件弹出的文件名输入框和上传按钮

拖到上传按钮后获取的值

4. 打开SciTE Script Editor,编辑脚本(此处是谷歌浏览器)-保存到桌面或者某路径下

5. 使用工具Compile Script to.exe(64)将.au3文件转换为.exe文件

6. 代码中使用

self.find_element(*self.inspection_db_import_loc).click()   #打开文件上传弹出框
os.system(r"F:\Python\UITesting\SafeUITesting\test_data\inspection_db_upfile.exe")  #使用系统方法导入.exe文件

 

高级文章推荐(将调用文件方法封装及兼容浏览器):

https://www.cnblogs.com/yajing-zh/p/5076881.html

猜你喜欢

转载自blog.csdn.net/hou_angela/article/details/86497395
0条评论
添加一条新回复