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

2.2 常用8种元素定位(Firebug和firepath)

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

2.2 常用8种元素定位(Firebug和firepath)

%[2gfrZ%m v0前言   
a,BgTG_H3g0元素定位在firefox上可以安装Firebug和firepath辅助工具进行元素定位。51Testing软件测试网*V9o+B3n\T@


N8U|Z&J+sM1W02.2.1 环境准备

D y$ZZ&| lk-z }01.浏览器选择:Firefox
LA(b(a a(^P QE D02.安装插件:Firebug和FirePath(设置》附加组件》搜索:输入插件名称》下载安装后重启浏览器)51Testing软件测试网JKj`C.q
3.安装完成后,页面右上角有个小爬虫图标
#_)N~f!U%K$w04.快速查看xpath插件:XPath Checker这个可下载,也可以不用下载
cz6zo`^voju05.插件安装完成后,点开附加组件》扩展,如下图所示

dA1[?cY u$B.z051Testing软件测试网w,[ x)wmN'yC/dM

A+^lNI W(r!~051Testing软件测试网)v*m wjg6A i

 

GRV4I?0

2.2.2 查看页面元素

51Testing软件测试网\0LbF.vV']\3J

百度搜索框为例,先打开百度网页
Ey)HX%b C1t01.点右上角爬虫按钮
f;l1TO p1q'TLtI5G'@$Z02.点左下角箭头
p\,y]k0tt1v03.将箭头移动到百度搜索输入框上,输入框高亮状态51Testing软件测试网K*]v8H,m#]%K
4.下方红色区域就是单位到输入框的属性:51Testing软件测试网O7b~5AP;s

<inputid="kw"class="s_ipt"type="text"autocomplete="off"maxlength="100"name="wd">
51Testing软件测试网J1k1g9A PCc

51Testing软件测试网Jv u*|L G#i

2.2.3 find_element_by_id()

51Testing软件测试网eRxx \M4^"bby

1.从上面定位到的元素属性中,可以看到有个id属性:id="kw",这里可以通过它的id属性定位到这个元素。51Testing软件测试网"K1S)n9|@m&D,|
2.定位到搜索框后,用send_keys()方法,输入文本。

4d3R9R/|?SZI0

7G$^jNI{R0

Pf s-N]Q!I?-[0

2.2.4 find_element_by_name() 

51Testing软件测试网+e0bm'~1w.x|#Wf

   1.从上面定位到的元素属性中,可以看到有个name属性:name="wd",这里可以通过它的name属性单位到这个元素。51Testing软件测试网pb!I'NV*O6GoG*Uw
    说明:这里运行后会报错,说明这个搜索框的name属性不是唯一的,无法通过name属性直接定位到输入框51Testing软件测试网0j+F Q.qD+\@

51Testing软件测试网:l"R bl!fa z6i1n

51Testing软件测试网0rI'w3E(~I

2.2.5 find_element_by_class_name()

M0dk aG/b*H TT01.从上面定位到的元素属性中,可以看到有个class属性:class="s_ipt",这里可以通过它的class属性定位到这个元素。

3nsXt2xK5m051Testing软件测试网+M-Xs!TaZ3n]f

51Testing软件测试网h,w4Kw-j8V }

2.2.6 find_element_by_tag_name()

;bC[(Z$mT01.从上面定位到的元素属性中,可以看到每个元素都有tag(标签)属性,如搜索框的标签属性,就是最前面的input。51Testing软件测试网2pV4q.k|3yCxa8_[
2.很明显,在一个页面中,相同的标签有很多,所以一般不用标签来定位。以下例子,仅供参考和理解,运行肯定报错。51Testing软件测试网Qa {;n(n@)y

51Testing软件测试网wP)X;Cb GK{&^

}2t7n(W/Y p0G M5E8_0

 2.2.7 find_element_by_link_text()

51Testing软件测试网R f!r%x$__-mK`

1.定位百度页面上"hao123"这个按钮

W!lO$cYA$|051Testing软件测试网npp{cGJI@

5Jm]r.O1bm051Testing软件测试网8qd,m v\ h(EW

 

Ot!~yRY+l051Testing软件测试网%H G"@j5@%^j l2d

查看页面元素:

kF&q.w5f0
<aclass="mnav"target="_blank"href="http://www.hao123.com">hao123</a>
51Testing软件测试网;zl.h4Ka(` WIJ

2.从元素属性可以分析出,有个href = "http://www.hao123.com51Testing软件测试网4R%] @\.Yn

+B7?M W |c0说明它是个超链接,对于这种元素,可以用以下方法:

b8py~K"A*`*XRO0@ d \0

1MFL.R2c1D051Testing软件测试网0l%N3I2j P)_-^r

 2.2.8 find_element_by_partial_link_text()

51Testing软件测试网 M7L ` _*~7Y c+]

1.有时候一个超链接它的字符串可能比较长,如果输入全称的话,会显示很长,这时候可以用一模糊匹配方式,截取其中一部分字符串就可以了51Testing软件测试网0q{9c%tv K

51Testing软件测试网k S'@ _|

2.如“hao123”,只需输入“ao123”也可以定位到

`'e|ue Ya&V0

"c(jk*H1[Wt ^^051Testing软件测试网QmW+k4g%u

2.2.9 find_element_by_xpath()

%_X0Y7s ]/FD0K01.以上定位方式都是通过元素的某个属性来定位的,如果一个元素它既没有id、name、class属性也不是超链接,这么办呢?或者说它的属性很多重复的。这个时候就可以用xpath解决。51Testing软件测试网qno4Gs|O
2.xpath是一种路径语言,跟上面的定位原理不太一样,首先第一步要先学会用工具查看一个元素的xpath。51Testing软件测试网lKu `I+X!eg

g~g"CH!K_6UYR6B~051Testing软件测试网1t\L7XAP K*B

[fr bByB%ane9tl0 51Testing软件测试网_ l@#XH0u%? Hr| oX

51Testing软件测试网5Q J(A d9n1XU

 3.按照上图的步骤,在FirePath插件里copy对应的xpath地址。51Testing软件测试网{c"a'd,RR

m9{ IV6S/OTo f051Testing软件测试网-F4d Ub q7e

 2.2.10 find_element_by_css_selector()

51Testing软件测试网5ZF!O^$}%WP

1.css是另外一种语法,比xpath更为简洁,但是不太好理解。这里先学会如何用工具查看,后续的教程再深入讲解51Testing软件测试网9Sfj:k:u
2.打开FirePath插件选择css51Testing软件测试网8q-\D1[5q^
3.定位到后如下图红色区域显示51Testing软件测试网0O l\a6r+YWK

51Testing软件测试网&rQ;v{ @9KQ*u%Ao

51Testing软件测试网6f:b ~\+|L

51Testing软件测试网+X/hc;n1y

 51Testing软件测试网j/UPDg:En

;V0z:W%M1A6C'Lw/?5U0总结:51Testing软件测试网&Za6PM;Y_m#|X'|:E9j
selenium的webdriver提供了18种(注意是18种,不是8种)的元素定位方法,前面8种是通过元素的属性来直接定位的,后面的xpath和css定位更加灵活,需要重点掌握其中一个。
YhN!Cni?0前八种是大家都熟悉的,经常会用到的:51Testing软件测试网U|d'Z+T5]

复制代码
1.id定位:find_element_by_id(self, id_)2.name定位:find_element_by_name(self, name)3.class定位:find_element_by_class_name(self, name)4.tag定位:find_element_by_tag_name(self, name)5.link定位:find_element_by_link_text(self, link_text)6.partial_link定位find_element_by_partial_link_text(self, link_text)7.xpath定位:find_element_by_xpath(self, xpath)8.css定位:find_element_by_css_selector(self, css_selector)
复制代码

mCyrRi-q#s+QxhA0这八种是复数形式(2.8和2.27章节有介绍)

H(@ Hg7W%l%W0
复制代码
9.id复数定位find_elements_by_id(self, id_)10.name复数定位find_elements_by_name(self, name)11.class复数定位find_elements_by_class_name(self, name)12.tag复数定位find_elements_by_tag_name(self, name)13.link复数定位find_elements_by_link_text(self, text)14.partial_link复数定位find_elements_by_partial_link_text(self, link_text)15.xpath复数定位find_elements_by_xpath(self, xpath)16.css复数定位find_elements_by_css_selector(self, css_selector
复制代码
51Testing软件测试网i3b$X(j(f._;K

这两种是参数化的方法,会在以后搭建框架的时候,会经常用到PO模式,才会用到这个参数化的方法(将会在4.2有具体介绍)

\1hr\R'}7hW/g0
17.find_element(self, by='id', value=None)18.find_elements(self, by='id', value=None)

TAG:

 

评分:0

我来说两句

Open Toolbar