昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了。

当然从折腾了俩小时才上传成功。下面写一下自己操作的步骤

首先网上说的有很多方法

如 input 标签的最好做了,直接定位到元素,然后再sendKeys("value")即可

<input id="file_name" class="text-1 w255" type="text" readonly="" value="" data-file=""/>

奈何研发的同学做成了 readonly  属性的input ,好了学了一点,这种属性的input就没办法 使用 sendkeys了。

只能换其他方法了,

使用 下面  webdriver for python模拟键盘操作

            #下面的方式没有成功
#ActionChains(self.driver).send_keys(releaseFile).perform()
#Ctrl + a
# ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
# self.driver.implicitly_wait(5)
# ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
# self.driver.implicitly_wait(5)
# ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
# time.sleep(2)
# ActionChains(self.driver).key_down(Keys.ENTER).perform()
#self.driver.find_element_by_xpath(".//*[@id='file_name']").send_keys(releaseFile)

发现鼠标实际操作的还是页面,而不是弹出的文件选择框,所以这种方式还是不行。

最后参考

Python selenium文件上传方法汇总

http://www.jb51.net/article/92678.htm

使用了 SendKeys,因为其他方法有的需要安装其他程序

首先要安装SendKeys库,可以用pip安装

pip install SendKeys

安装的过程遇到如下问题

此时需要到 http://aka.ms/vcpython27  下载

https://www.microsoft.com/en-us/download/details.aspx?id=44266

然后执行安装 sendkeys即可成功。

代码如下

#-*-coding:utf-8-*-
#Time:2017/7/1-15:47
#Author:YangYangJun #-*-coding:utf-8-*-import SendKeys #点击上传 下载附件
time.sleep(2)
self.driver.find_element_by_xpath(".//*[@id='down_bar_code_template']").click()
self.driver.implicitly_wait(5)
#releaseFile_Path = os.path.join(os.getcwd(),'test_data')
releaseFile = r'C:\PySpace\CMS\UiTest\test_data' + '\UI_Release01.xlsx'
time.sleep(2)
self.driver.implicitly_wait(5)
self.driver.find_element_by_css_selector(".webuploader-pick").click()
time.sleep(2)
#将路径输入
SendKeys.SendKeys(releaseFile)
time.sleep(2)
#确定路径输入
SendKeys.SendKeys("{ENTER}")
time.sleep(2)
#确定打开按钮
SendKeys.SendKeys("{ENTER}")
time.sleep(2)
self.driver.implicitly_wait(5)
#点击上传
self.driver.find_element_by_xpath(".//*[@id='file_upload_btn']").click()
time.sleep(6)
#提示信息, 上传成功
successTest = u"上传商品成功!"
get_reInfo = self.driver.find_element_by_xpath(".//*[@id='step_05']/ul/li[1]").text
if successTest == get_reInfo:
print u"上传成功!"
#点击查看商品
self.driver.find_element_by_xpath(".//*[@id='view_goods']").click()
drugList = ['阿奇霉素片']
#调用验证及删除函数
self.get_Verify(drugList)
else:
print u"上传失败!"
else:
print u"进入卖家中心失败"

效果如下图

第一个 模拟回车是为了确认输入的文件路径,第二个回车是为了确认点击打开按钮。

至此文件的上传功能就已经完成了。

网上说这种方式有些不稳定,有时间的话可以学习一下其他方法。

Python WebDriver 文件上传(一)的更多相关文章

  1. Python WebDriver 文件上传(二)

    今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python WebDriver 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是 ...

  2. Python Selenium 文件上传之Autoit

    今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传之SendKeys 这种方法直接通过命令行执行脚本时没有问题,可以成功 ...

  3. Python Selenium 文件上传之SendKeys

    昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...

  4. Selenium2+python自动化-文件上传

    前言 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决:另外一种非 ...

  5. selenium+Python(文件上传)

    文件上传操作也比较常见功能之一,上传功能没有用到新有方法或函数,上传过程一般要打开一个本地窗口,从窗口选择本地文件添加.所以,一般会卡在如何操作本地窗口添加上传文件只要定位上传按钮,通send_key ...

  6. Python 之文件上传

    基于form表单提交 # 需要指定form-data,不能直接拼键值对 可以指定name照片存在位置 views.py from django.shortcuts import render,redi ...

  7. Python Django文件上传

    文件保存本地 view视图 def update(request): if request.method =='GET': return render(request,'update.html') e ...

  8. python day32--struct,文件上传下载

    一.struct模块 可以把要发送的数据长度转换成固定长度的字节 struct.pack('i',数据长度) struct.unpack('i',数据长度) 二.上传下载文件作业 server imp ...

  9. python服务器文件上传下载+GUI【tkinter】

    大概就是一个通过应用程序来和服务器打交道的这么一个,小东西 1.GUI 用的是tkinter # -*- coding: UTF-8 -*- from tkinter import * import ...

随机推荐

  1. vim自定义配置之自动括号

    BundlenInstall安装auto-pairs vimConfig/plugin/auto-pairs-setting.vim let g:autopairsflymode=

  2. 自己写了一个图片的马赛克消失效果(jQuery)

    其中的一个效果: html代码: <h1>单击图片,产生效果</h1> <div class="box"></div> 插件代码: ...

  3. Oracle 11g 新特性 -- Oracle Restart 说明(转载)

    转载:http://blog.csdn.net/tianlesoftware/article/details/8435670 一.  OHASD 说明 Oracle 的Restart 特性是Oracl ...

  4. yyblog2.0 数据库开发规范

    一.基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 (2)表字符集默认使用utf8,必要时候使用utf8mb4 解读:1. ...

  5. 记一次全站升级https引发的一系列问题

    中秋假期,闲来无事.花了一下午折腾了下https,说实话这年头还有网站不上https显然是折腾精神不够啊~ 1.SSL证书评估 看了市面上各种类型的证书,有收费的也有免费的,但是最终还是选择了腾讯云提 ...

  6. 配置myslq提示 the configuration step starting server is taking longer than expected we apologize for thi

    .卸载重新安装,勾选日志配置选项,自定义日志输出路径

  7. linux下python3离线加载nltk_data,不用nltk.download()

    在不能上网的服务器上把nltk_data关联到python3,已经安装anaconda3所以不需要安装nltk,环境是linux 首先没有nltk_data在使用nltk会报错 LookupError ...

  8. django-form.errors和前端上传文件

    一.上传文件: 在相应的模型里面定义`FileField`或者是`ImageField`类型的字段,并且1.设置好`upload_to`参数来指定上传的路径. class User(models.Mo ...

  9. VsCode中vim插件剪切板等问题

    剪切板共享 这个挺重要的,否则每次右键菜单复制粘贴会奔溃的. 在用户设置中添加: "vim.useSystemClipboard": true, 光标的变化 我觉得这个也重要,毕竟 ...

  10. Mysql 性能分析 Explain

    Mysql Query Optmize: 查询优化器, SQL语句会给Query Optimize他会执行他认为最优的方式.. Mysql 常见问题 CPU饱和,IO磁盘发生在装入数据大于内存时. E ...