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

2.1 操作元素基本方法

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

2.1 操作元素基本方法

)e/Hm3P1Ee0前言
^3sZ;@ r~4["[0前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架。我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可视化工具,我们要学的是webdriver框架的API。
ON1W"NX%`"|+o0本篇主要讲如何用Python调用webdriver框架的API,对浏览器做一些常规的操作,如打开、前进、后退、刷新、设置窗口大小、截屏、退出等操作。

1b Q?|f8z&}*r0

2.1.1 打开网页

G;f)J CVn(DpL01.从selenium里面导入webdriver模块51Testing软件测试网8J%_ Bw)O
2.打开Firefox浏览器(Ie和Chrome对应下面的)51Testing软件测试网J.f phR1n+vs
3.打开百度网址

TE]OX$JI0

#`]U9K&Gq K2P"{8k051Testing软件测试网3tp0p \tK2t$H+@)q

2.1.2 设置休眠

51Testing软件测试网2c`}'|^Ns

1.由于打开百度网址后,页面加载需要几秒钟,所以最好等到页面加载完成后再继续下一步操作51Testing软件测试网 q%Sensk d j
2.导入time模块,time模块是Python自带的,所以无需下载51Testing软件测试网}d&|/z7hT}kc8b
3.设置等待时间,单位是秒(s),时间值可以是小数也可以是整数

Xh8d v#P%u0

V&WXXP8l3o5s#_Yh.k0

(h {2{!S5Busp:t$Z#M0

2.1.3 页面刷新

51Testing软件测试网ut)Ol1BgZ$O q2S%X

1.有时候页面操作后,数据可能没及时同步,需要重新刷新51Testing软件测试网/n|'R/} T1{ L f9@TRv _
2.这里可以模拟刷新页面操作,相当于浏览器输入框后面的刷新按钮51Testing软件测试网;N vmQX

YI.Se@ H l PAI0

[Ugv-Q1v0

2.1.4 页面切换

Ui`*I9o'a6t1Sj H01.当在一个浏览器打开两个页面后,想返回上一页面,相当于浏览器左上角的左箭头按钮。51Testing软件测试网*Ax"f.iUw(p4At;E\ V

51Testing软件测试网"Y5A!R G&wh c

2.返回到上一页面后,也可以切换到下一页,相当于浏览器左上角的右箭头按钮。51Testing软件测试网;vm] S_6_

,l+e[E hu0

l jLtp8fk7b0

2.1.5 设置窗口大小

51Testing软件测试网_o }-f+{Eu

1.可以设置浏览器窗口大小,如设置窗口大小为手机分辨率540*960
8j#pb*r] K!SFT4xR02.也可以最大化窗口51Testing软件测试网.e6QR:L)Qu

[C/Ddwe jS051Testing软件测试网;Q%NH i_hB n0k b

 2.1.6 截屏

M%Qb.g \1W!s^4Tn01. 打开网站之后,也可以对屏幕截屏51Testing软件测试网^K1\Z%Yv
2.截屏后设置指定的保存路径+文件名称+后缀

Jo2s&U1Q4} ] j051Testing软件测试网AP+YX3SFH0^c

(Q0xjZYu0

2.1.7 退出

51Testing软件测试网#w'h4a+W^vaL

1.退出有两种方式,一种是close;另外一种是quit。
WXA;y.q"g0e02.close用于关闭当前窗口,当打开的窗口较多时,就可以用close关闭部分窗口。
8|L q8e8Vu03.quit用于结束进程,关闭所有的窗口。51Testing软件测试网XW7JB!o7c6uI
4.最后结束测试,要用quit。quit可以回收c盘的临时文件。51Testing软件测试网YKA ~p

51Testing软件测试网%z%Pz,Vs;L

bu7r@ Q051Testing软件测试网L-~a6^*Z+EMyV

掌握了浏览器的基本操作后,接下来就可以开始学习元素定位了,元素定位需要有一定的html基础。没有基础的可以按下浏览器的F12快捷键先看下html的布局,先了解一些就可以了。51Testing软件测试网w`#?.d:C

2.1.8 加载浏览器配置

!a/If!V gmD!MH g0启动浏览器后,发现右上角安装的插件不见了,这是因为webdriver启动浏览器时候,是开的一个虚拟线程,跟手工点开是有区别的,selenium的一切操作都是模拟人工(不完全等于人工操作)。

^ t Hk'L A0

e"j0o#hgq0加载Firefox配置51Testing软件测试网*m/g'XVl:LB-P

51Testing软件测试网(X@%l;]-J};L1]!x2G5Y

   有小伙伴在用脚本启动浏览器时候发现原来下载的插件不见了,无法用firebug在打开的页面上继续定位页面元素,调试起来不方便 。加载浏览器配置,需要用FirefoxProfile(profile_directory)这个类来加载,profile_directory既为浏览器配置文件的路径地址。

4m'gTM*q-J0

h b}@[s:St FKg0一、遇到问题
:ii] \,K?01.在使用脚本打开浏览器时候,发现右上角原来下载的插件firebug不见了,到底去哪了呢?
2AFe@.V.u]qU02.用脚本去打开浏览器时候,其实是重新打开了一个进程,跟手动打开浏览器不是一个进程。51Testing软件测试网)pO a$TC,c
所以没主动加载插件,不过selenium里面其实提供了对应的方法去打开,只是很少有人用到。51Testing软件测试网%k_2@2w;`T

51Testing软件测试网&e2K*d Cv$n_

Xe4Lhw(U0

lgW4w@!O(e#P]1X0 

MExUQ4g0

&B0UE[n C0 51Testing软件测试网-B*a,p6@Hzz;NB

.L,xT:E0u-_2z:a0二、FirefoxProfile51Testing软件测试网x'C(e+E+C
1.要想了解selenium里面API的用法,最好先看下相关的帮助文档打开cmd窗口,
d,y@&I T"{&w0输入如下信息:51Testing软件测试网b6P g3h;E+SBp

51Testing软件测试网FP&G,v9t6j)Gn Y

->python51Testing软件测试网-eu:cKuJhhj u.s,b
->from selenium import webdriver51Testing软件测试网4hD,wFM
->help(webdriver.FirefoxProfile)

E T ?.] j a D6rOt051Testing软件测试网`8^M7k^f

S9F"dVT0N1}UO051Testing软件测试网Dz2ZUN

Help on class FirefoxProfile in module51Testing软件测试网8{1j GeS{ _Q^9\
selenium.webdriver.firefox.firefox_profile:51Testing软件测试网f}me%YU8WYY)D
class FirefoxProfile(builtin.object)
evt0D,_i Z0|  Methods defined here:

_'l3Pj5NspR051Testing软件测试网 hX%J:`-Q,@ i

|51Testing软件测试网D c~/u+EJ
|  init(self, profile_directory=None)51Testing软件测试网ER8|a^$M
|      Initialises a new instance of a Firefox Profile51Testing软件测试网 D6SV Ys
|    
$O"|[Bba0|      :args:51Testing软件测试网*al:Bc#c^&\}L
|       - profile_directory: Directory of profile that you want to use.51Testing软件测试网/a[]Pq#Y.O
|         This defaults to None and will create a new51Testing软件测试网z8hv)C+@ C
|         directory when object is created.

-T U}8|Q0

!FTA1L9x3a;K02.翻译过来大概意思是说,这里需要profile_directory这个配置文件路径的参数51Testing软件测试网0K [6l V VYL
3.profile_directory=None,如果没有路径,默认为None,启动的是一个新的,有的话就加载指定的路径。51Testing软件测试网v@-mN6_&^1~

51Testing软件测试网TuZh{'y dQ

三、profile_directory51Testing软件测试网$V,V]L G HP3V
1.问题来了:Firefox的配置文件地址如何找到呢?
`9T&m?RmJ02.打开Firefox点右上角设置>?(帮助)>故障排除信息>显示文件夹51Testing软件测试网Ll1W?f `

k XukX e5gU0

yN$B'R8d[$p v051Testing软件测试网2z-P-}7spOs

3.打开后把路径复制下来就可以了:
!p9Lwan0C:\Users\xxx\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default

a {8W2B(f5ImV}051Testing软件测试网$Y6F&OpK

51Testing软件测试网O8H%z"I|;[eC

Z[N-B;?0D)Po0V9^tw0 51Testing软件测试网K:A;}5L"w"`?Roh N

(p O4MO;My;NL0四、启动配置文件51Testing软件测试网4uylX#EhY
1.由于文件路径存在字符:\ ,反斜杠在代码里是转义字符,这个有点代码基础的应该都知道。
6\q ?$lQ!t:J5F0不懂什么叫转义字符的,自己翻书补下基础吧!51Testing软件测试网 s'qohw+k"Hy5T P
2.遇到转义字符,为了不让转义,有两种处理方式:
Y9mS%g|;D0第一种:\ (前面再加一个反斜杠)

'A:ff$e%vG9Y t ` @4h051Testing软件测试网f*V~:pF1jtqUf

第二种:r”\"(字符串前面加r,使用字符串原型)

,bP,fsw051Testing软件测试网3N5~*nX ^,ZZ

MO9@7G,w'i3y V]051Testing软件测试网tB H8N+H;u

 

/|P2N4j*te7Ga051Testing软件测试网}4~*b N pUu5e4_$gsM

五、参考代码:51Testing软件测试网1M3pQK5|y

# coding=utf-8
])tuy1`~#g0
fromseleniumimportwebdriver
[)U3N(Z$Fy {E0
"q+p0hw s/Gi$aP0# 配置文件地址
o*LJnYGejBDL0
profile_directory =r'C:\Users\xxx\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default'
BU^!A;Itm2e._s0
# 加载配置配置
c^+T7C)|N0
profile = webdriver.FirefoxProfile(profile_directory)
J"Hqe~4H(O'^0# 启动浏览器配置
%qr-tT.O%\0
driver = webdriver.Firefox(profile)
/^?-K2F\/Z ['W^3x4{0driver.quit()
51Testing软件测试网V(Z_w2PK3k

 其实很简单,在调用浏览器的前面,多加2行代码而已,主要是要弄清楚原理。51Testing软件测试网6x;f O!sSOS8T#a H O6R


TAG:

 

评分:0

我来说两句

Open Toolbar