2.27 18种定位方法总结
51Testing软件测试网i^EW {NP0QE&M{前言
'O'ctV1sJ0江湖传言,武林中流传八种定位,其中xpath是宝刀屠龙,css是倚天剑。
8J:ut8CSsg0除了这八种,其实还有十种定位方法,眼看就快失传了,今天小编让失传已久的定位方法重出江湖!51Testing软件测试网*A$i0w6r5N*h2x"l
wW!L t9xc6q1t1EdhT0一、十八种定位方法
I KrRn*H051Testing软件测试网pOb-[o?m前八种是大家都熟悉的,经常会用到的51Testing软件测试网Y.FQ8iUF
51Testing软件测试网X0T3eNS4r0y5XC ]1.id定位:find_element_by_id(self, id_)51Testing软件测试网2s1hR9lY
2.name定位:find_element_by_name(self, name)51Testing软件测试网aq-~9p
Vj
3.class定位:find_element_by_class_name(self, name)
_6q'QZ7z*n m0j+G7U:~04.tag定位:find_element_by_tag_name(self, name)51Testing软件测试网w|6z7\F&q"S
5.link定位:find_element_by_link_text(self, link_text)51Testing软件测试网"r[X4S{{
6.partial_link定位find_element_by_partial_link_text(self, link_text)51Testing软件测试网c9]Nt
bx0h
feY
7.xpath定位:find_element_by_xpath(self, xpath)51Testing软件测试网9nnlg$R:N$p
8.css定位:find_element_by_css_selector(self, css_selector)
2B`ZY-E!Fi051Testing软件测试网;a-])v;j/W!K q这八种是复数形式51Testing软件测试网Q'c M3Gv
51Testing软件测试网6srX,J7z?
p)a_9.id复数定位find_elements_by_id(self, id_)51Testing软件测试网s5h
w n7P
10.name复数定位find_elements_by_name(self, name)51Testing软件测试网!Z6L%tRGg+[
11.class复数定位find_elements_by_class_name(self, name)51Testing软件测试网%T/y D
ds
~9@
12.tag复数定位find_elements_by_tag_name(self, name)51Testing软件测试网6AsSeq Dt
13.link复数定位find_elements_by_link_text(self, text)
V,b+sfwa
A014.partial_link复数定位find_elements_by_partial_link_text(self, link_text)
gf`A8go!] a015.xpath复数定位find_elements_by_xpath(self, xpath)
3|6T*u-Gf%w"P
JW ~016.css复数定位find_elements_by_css_selector(self, css_selector)51Testing软件测试网q!I{/@z~6? @
3jC8m&S#@+~0这两种就是快失传了的51Testing软件测试网SY TU0y3Z
3}w+V_K5C'Y6J017.find_element(self, by='id', value=None)51Testing软件测试网m3T2Y%CY"S
18.find_elements(self, by='id', value=None)
^zP:V?9r051Testing软件测试网dFgjH二、element和elements傻傻分不清
f*jr}tx;AB7n01.element方法定位到是是单数,是直接定位到元素51Testing软件测试网1uF9a7[8n&f*u&JF$m
2.elements方法是复数,这个学过英文的都知道,定位到的是一组元素,返回的是list队列
O1s
p`~03.可以用type()函数查看数据类型51Testing软件测试网jDUf z u+gT
4.打印这个返回的内容看看有什么不一样
~,I[t}5QD;U051Testing软件测试网8vMDAj'~JCs6z_051Testing软件测试网S9Vw3Vn5df"d三、elements定位方法
_6jghR6`01.前面2.8章节讲过定位一组元素用elements的方法,elements也可以用于单数定位。51Testing软件测试网1gv;N R5Y a&Kv%}u
/Lx2wu-pP?2`02.这里重点介绍下用elements方法如何定位元素,当一个页面上有多个属性相同的元素时,然后父元素的属性也比较模糊,不太好定位。这个时候不用怕,换个思维,别老想着一次定位到,可以先把相同属性的元素找出来,取对应的第几个就可以了。
L@.SWZ"d }p0P
`3hyQP-gdF03.如下图,百度页面上有六个class一样的元素,我要定位“地图”这个元素。51Testing软件测试网1^%NT4| u?aQ
51Testing软件测试网:x$x;j&Z*CCs5uSF0ehFX3e0F}[051Testing软件测试网w/O0a)B M z Q4.取对应下标即可定位了。
i&mHw&x"]XR0&q*Cy-B,B iw:RV0
R7Y2O$Au u9dDe0`RcC'}%y0四、参考代码
XG-wpOu0#coding:utf-8fromseleniumimportwebdriver
driver=webdriver.Firefox()
driver.get("http://www.baidu.com")#这里是定位的单个idelement = driver.find_element_by_id("kw")printtype(element)printelement#这里定位是多个classelements = driver.find_elements_by_class_name("mnav")printtype(elements)printelements#这里用的css语法s = driver.find_elements("css selector",".mnav")#'地图'在第四个位置prints[3].text
s[3].click()#这个写法也是可以的#driver.find_elements("css selector", ".mnav")[3].click()