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,对浏览器做一些常规的操作,如打开、前进、后退、刷新、设置窗口大小、截屏、退出等操作。
2.1.1 打开网页
G;f)J CVn(DpL01.从selenium里面导入webdriver模块51Testing软件测试网8J%_Bw)O
2.打开Firefox浏览器(Ie和Chrome对应下面的)51Testing软件测试网J.fphR1n+vs
3.打开百度网址
#`]U9K&Gq K2P"{8k051Testing软件测试网3tp0p \ t K2t$H+@)q
2.1.2 设置休眠
51Testing软件测试网2c`}'|^Ns1.由于打开百度网址后,页面加载需要几秒钟,所以最好等到页面加载完成后再继续下一步操作51Testing软件测试网
q%Sen skdj
2.导入time模块,time模块是Python自带的,所以无需下载51Testing软件测试网}d&|/z7hT}kc8b
3.设置等待时间,单位是秒(s),时间值可以是小数也可以是整数
V&WXXP8l3o5s#_Yh.k0
(h{2{!S5Busp:t$Z#M02.1.3 页面刷新
51Testing软件测试网ut)Ol1BgZ$O q2S%X1.有时候页面操作后,数据可能没及时同步,需要重新刷新51Testing软件测试网/n|'R/} T1{L
f9@TRv _
2.这里可以模拟刷新页面操作,相当于浏览器输入框后面的刷新按钮51Testing软件测试网;NvmQX
YI.S e@ Hl PAI0
[Ugv-Q1v02.1.4 页面切换
Ui`*I9o'a6t1Sj H01.当在一个浏览器打开两个页面后,想返回上一页面,相当于浏览器左上角的左箭头按钮。51Testing软件测试网*Ax"f.iUw(p4At;E\V
51Testing软件测试网"Y5A!RG&wh c2.返回到上一页面后,也可以切换到下一页,相当于浏览器左上角的右箭头按钮。51Testing软件测试网;vm] S_6_
,l+e[E hu0
l jLtp8fk7b02.1.5 设置窗口大小
51Testing软件测试网_o }-f+{Eu1.可以设置浏览器窗口大小,如设置窗口大小为手机分辨率540*960
8j#pb*r] K!SFT4xR02.也可以最大化窗口51Testing软件测试网.e6QR:L)Qu
[C/DdwejS051Testing软件测试网;Q%NH i_hB n0kb
2.1.6 截屏
M%Qb.g\1W!s^4Tn01. 打开网站之后,也可以对屏幕截屏51Testing软件测试网^K1\Z%Yv
2.截屏后设置指定的保存路径+文件名称+后缀
2.1.7 退出
51Testing软件测试网#w'h4a+W^vaL1.退出有两种方式,一种是close;另外一种是quit。
WXA;y.q"g0e02.close用于关闭当前窗口,当打开的窗口较多时,就可以用close关闭部分窗口。
8|Lq8e8Vu03.quit用于结束进程,关闭所有的窗口。51Testing软件测试网XW7JB!o7c6uI
4.最后结束测试,要用quit。quit可以回收c盘的临时文件。51Testing软件测试网YKA ~p
掌握了浏览器的基本操作后,接下来就可以开始学习元素定位了,元素定位需要有一定的html基础。没有基础的可以按下浏览器的F12快捷键先看下html的布局,先了解一些就可以了。51Testing软件测试网w`#?.d:C
2.1.8 加载浏览器配置
!a/I f!V gmD!MH g0启动浏览器后,发现右上角安装的插件不见了,这是因为webdriver启动浏览器时候,是开的一个虚拟线程,跟手工点开是有区别的,selenium的一切操作都是模拟人工(不完全等于人工操作)。
^ t Hk'LA0e"j0o#hgq0加载Firefox配置51Testing软件测试网*m/g'XVl:LB-P
51Testing软件测试网(X@%l;]-J};L1]!x2G5Y有小伙伴在用脚本启动浏览器时候发现原来下载的插件不见了,无法用firebug在打开的页面上继续定位页面元素,调试起来不方便 。加载浏览器配置,需要用FirefoxProfile(profile_directory)这个类来加载,profile_directory既为浏览器配置文件的路径地址。
4m'gTM*q-J0h
b}@ [s:StFKg0一、遇到问题
:ii]\,K?01.在使用脚本打开浏览器时候,发现右上角原来下载的插件firebug不见了,到底去哪了呢?
2AFe@.V.u]qU02.用脚本去打开浏览器时候,其实是重新打开了一个进程,跟手动打开浏览器不是一个进程。51Testing软件测试网)pO a$TC,c
所以没主动加载插件,不过selenium里面其实提供了对应的方法去打开,只是很少有人用到。51Testing软件测试网%k_2@2w;`T
l gW4w@!O(e#P]1X0
ME xUQ4g0&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软件测试网b6Pg3h;E+SBp
->python51Testing软件测试网-eu:cKuJhh ju.s,b
->from selenium import webdriver51Testing软件测试网4hD,wFM
->help(webdriver.FirefoxProfile)
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:
|51Testing软件测试网 Dc~/u+EJ
| init(self, profile_directory=None)51Testing软件测试网ER8|a^$M
| Initialises a new instance of a Firefox Profile51Testing软件测试网D6SVYs
|
$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.
!FTA1L9x3a;K02.翻译过来大概意思是说,这里需要profile_directory这个配置文件路径的参数51Testing软件测试网0K
[6lV
VYL
3.profile_directory=None,如果没有路径,默认为None,启动的是一个新的,有的话就加载指定的路径。51Testing软件测试网v@-mN6_&^1~
三、profile_directory51Testing软件测试网$V,V]LGHP3V
1.问题来了:Firefox的配置文件地址如何找到呢?
`9T&m?RmJ02.打开Firefox点右上角设置>?(帮助)>故障排除信息>显示文件夹51Testing软件测试网L l1W?f
`
kXukX e5gU0
yN$B'R8d[$p v051Testing软件测试网2z-P-}7s p Os3.打开后把路径复制下来就可以了:
!p9Lwan0C:\Users\xxx\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default
51Testing软件测试网O8H%z"I|;[eC
Z[N-B;?0D)Po0V9^tw0 51Testing软件测试网K:A;}5L"w"`?RohN
(p
O4MO;My;NL0四、启动配置文件51Testing软件测试网4uylX#Eh Y
1.由于文件路径存在字符:\ ,反斜杠在代码里是转义字符,这个有点代码基础的应该都知道。
6\q?$lQ!t:J5F0不懂什么叫转义字符的,自己翻书补下基础吧!51Testing软件测试网s'qohw+k"Hy5T P
2.遇到转义字符,为了不让转义,有两种处理方式:
Y9mS%g|;D0第一种:\ (前面再加一个反斜杠)
第二种:r”\"(字符串前面加r,使用字符串原型)
,bP,fsw051Testing软件测试网3N5~*nX ^,ZZ