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

2.27 18种定位方法总结

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

2.27 18种定位方法总结

51Testing软件测试网i^EW{N P0Q E&M{

前言
'O'ctV1sJ0江湖传言,武林中流传八种定位,其中xpath是宝刀屠龙,css是倚天剑。
8J:ut8CSsg0除了这八种,其实还有十种定位方法,眼看就快失传了,今天小编让失传已久的定位方法重出江湖!51Testing软件测试网*A$i0w6r5N*h2x"l

wW!Lt9xc6q1t1EdhT0一、十八种定位方法

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*nm0j+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软件测试网9nnl g$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'cM3Gv

51Testing软件测试网6srX,J7z? p)a_

9.id复数定位find_elements_by_id(self, id_)51Testing软件测试网s5h wn7P
10.name复数定位find_elements_by_name(self, name)51Testing软件测试网!Z6L%tRG g+[
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软件测试网6AsSeqDt
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软件测试网 SYTU0y3Z

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软件测试网jDUfz u+gT
4.打印这个返回的内容看看有什么不一样

~,I[t}5QD;U051Testing软件测试网8vMDAj

'~JCs6z_051Testing软件测试网S9Vw3Vn5df"d

三、elements定位方法
_6jghR6`01.前面2.8章节讲过定位一组元素用elements的方法,elements也可以用于单数定位。51Testing软件测试网1gv;N R5Ya&Kv%}u

/Lx2w u-pP?2`02.这里重点介绍下用elements方法如何定位元素,当一个页面上有多个属性相同的元素时,然后父元素的属性也比较模糊,不太好定位。这个时候不用怕,换个思维,别老想着一次定位到,可以先把相同属性的元素找出来,取对应的第几个就可以了。

L@.SW Z"d }p0

P `3h yQP-gdF03.如下图,百度页面上有六个class一样的元素,我要定位“地图”这个元素。51Testing软件测试网1^%NT4| u?aQ

51Testing软件测试网:x$x;j&Z*CCs5uSF0eh

FX3e0F}[051Testing软件测试网w/O0a)B M z Q

4.取对应下标即可定位了。

i&mHw&x"]XR0

&q*Cy-B,B iw:RV0

R7Y2O$Au u9dD e0

`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()
复制代码

TAG:

引用 删除 又在想桃子   /   2021-10-28 17:10:08
好良心呀!
引用 删除 又在想桃子   /   2021-10-28 17:09:39
5
 

评分:0

我来说两句

Open Toolbar