PythonSelenium⽂件上传之SendKeys 昨天写了Web ⽂件下载的ui⾃动化,下载之后,今天就要写web ⽂件上传的功能了。
当然从折腾了俩⼩时才上传成功。下⾯写⼀下⾃⼰操作的步骤
⾸先⽹上说的有很多⽅法
如 input 标签的最好做了,直接定位到元素,然后再sendKeys("value")即可
<input id="file_name" class="text-1 w255" type="text" readonly="" value="" data-file=""/>
奈何研发的同学做成了 readonly  属性的input ,好了学了⼀点,这种属性的input就没办法使⽤ sendkeys了。
只能换其他⽅法了,
使⽤下⾯
#下⾯的⽅式没有成功
#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()
selenium xpath定位
# 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⽂件上传⽅法汇总
使⽤了 SendKeys,因为其他⽅法有的需要安装其他程序
⾸先要安装SendKeys库,可以⽤pip安装
pip install SendKeys
安装的过程遇到如下问题
然后执⾏安装 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.wd(),'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 = ['阿奇霉素⽚']
#调⽤验证及删除函数
<_Verify(drugList)
else:
print u"上传失败!"
else:
print u"进⼊卖家中⼼失败"
效果如下图
第⼀个模拟回车是为了确认输⼊的⽂件路径,第⼆个回车是为了确认点击打开按钮。
⾄此⽂件的上传功能就已经完成了。
⽹上说这种⽅式有些不稳定,有时间的话可以学习⼀下其他⽅法。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。