测试必须在时间、质量和成本之间获取一个平衡点,这是测试策略和测试设计的价值体现。

2.16 文件上传(send_keys)

上一篇 / 下一篇  2018-06-12 10:51:52 / 个人分类:Python+Selenium2 WebDriver API

2.16 文件上传(send_keys)

lpM,sB@&E ~0前言
9|;mm1y F,M4g.[5W0文件上传是web页面上很常见的一个功能,用脚本去实现文件上传却不是那么简单。51Testing软件测试网|a$K#f/F8Ee
一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决;
]{,dD jz0另外一种非input标签实现起来比较困难,可以借助autoit工具或者SendKeys第三方库。51Testing软件测试网(v"yc.`%B xL
本篇以博客园的上传图片为案例,通过send_keys()方法解决文件上传问题51Testing软件测试网0HH.VCcu0]
一、识别上传按钮51Testing软件测试网X|6p0I"aI1dbr
1.点开博客园编辑器里的图片上传按钮,弹出”上传本地图片”框。
*kj [1sL n+[b02.用firebug查看按钮属性,这种上传图片按钮有个很明显的标识,它是一个input标签,并且type属性的值为file。只要找到这两个标识,我们就可以直接用send_keys()方法上传文件了。51Testing软件测试网'~:L6E:|0dD

51Testing软件测试网?,q)c!R,QW4R8@bx8s

51Testing软件测试网+[8ZMrLl3a8Ue/D

@+z#m ww&`0 51Testing软件测试网|%C@.u:@Iu @p

4I`/k l$_H3A#E~v"a2{0 51Testing软件测试网o%Mh|"~@rs1^

51Testing软件测试网uP%s&U9l!B

二、定位iframe
V9\4W%A[9Z01.这里定位图片上传按钮情况有点复杂,首先它是在iframe上。51Testing软件测试网-|yT.C4I
2.这个iframe的id是动态的,且没有name属性,其它属性也不是很明显。
+V;e^Q0U03.通过搜索发现,这个页面上有两个iframe,需要定位的这个iframe是处于第二个位置。51Testing软件测试网Gf({;o U"JI;uo

J7n&T5hKX H0

y-B1{8n[Xa6@8K051Testing软件测试网s1m-P/j;z+R

 

w5y%Z!Xq#S0

W KJow~04.可以通过标签定位所有的iframe标签,然后取对应的第几个就可以了。51Testing软件测试网q4CxS ~%ZlS-K0r0X E

ex]_+X!w0

#B+u4N/f X^rNp051Testing软件测试网-[As(@4b _7vT;m

 

0z"Uf&ZcXe0

&x&]1H(k4{+|t&N0三、文件上传51Testing软件测试网:SX m k"a:xX(K@Z6`

w5S fb#h8?F \"Z01.先定位到文件上传按钮,直接调用send_keys()方法就可以实现啦51Testing软件测试网up s_!\wM

复制代码
#coding:utf-8fromseleniumimportwebdriverimporttime
profileDir= r'C:\Users\Gloria\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default'profile=webdriver.FirefoxProfile(profileDir)
driver=webdriver.Firefox(profile)
driver.implicitly_wait(30)
driver.get("http://www.cnblogs.com/yoyoketang/")
driver.find_element_by_link_text("随笔").click()
time.sleep(3)#点开编辑器图片driver.find_element_by_css_selector("img.mceIcon").click()
time.sleep(3)#定位所有iframe,取第二个iframe. = driver.find_elements_by_tag_name('iframe')[1]#切换到iframe上driver.switch_to_frame(iframe)#文件路径driver.find_element_by_name('file').send_keys(r"D:\test\xuexi\test\14.png")
复制代码
51Testing软件测试网Zyl:X8c

非input标签的文件上传,就不适用于此方法了,需要借助autoit工具或者SendKeys第三方库。

VPt P-l0

TAG:

 

评分:0

我来说两句

Open Toolbar