selenium—webdriver元素定位总结_1.06

几种元素定位的方法总结

1、通过 id 定位元素

2、通过 class_name 定位元素

3、通过 tag_name 定位元素

4、通过 name 定位元素

5、通过 link 文字精确定位元素

6、通过 link 文字模糊定位元素

7、通过 CSS 定位元素

8、通过 XPath 定位元素

9、通过 By 定位元素

以百度搜索输入框为例,具体说明各个定位方式的用法:

1.通过id定位元素

如果id不是动态的,一个页面的id是唯一的。最简单的定位方式。

使用:find_element_by_id("id_vaule")

实例:find_element_by_id("kw")

注意点:有些id值是动态变化的,则不能使用该方法定位。如下:id就是动态的,每次进入页面,该id都会改变。

<label style="display: block;" id="auto-id-1469758879170" class="u-label f-dn">邮箱帐号或手机号</label>

 

2.通过class_name定位元素

classname有可能重复哦。 

使用:find_element_by_class_name("class_name_vaule")

实例:find_element_by_class_name("s_ipt")

 

3.通过tag_name定位元素

标签名字最容易重复,不过,当定位一组数据时,可使用。

使用:find_element_by_tag_name("tag_name_vaule")

实例:find_element_by_tag_name("input")

 

注意点:当定位一组元素时:可勾选一组复选框。如下:

find_element_by_tag_name("input")

4.通过name定位元素

name有可能会重复哦。 

使用:find_element_by_name("name_vaule")

实例:find_element_by_name("wd")

 

5.通过link文字精确定位元素

<a οnclick="return false;" class="lb" name="tj_login" href="https://passport.baidu.com/v2/?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2F">登录</a>

 

使用:find_element_by_link_text("text_vaule")

实例:find_element_by_link_text("登录")

 

6.通过link文字模糊定位元素

使用:find_element_by_partial_link_text("部分text_vaule")

实例:find_element_by_partial_link_text("登")

 

7.通过CSS定位元素

可查看我的另外一篇博文:w3school之CSS学习笔记 学习css知识,更加有助于定位。

CSS(Cascading Style Sheets)是一种语言,它用来描述HTML和XML文档的表现。CSS可以较为灵活的选择控件的任意属性,一般情况下会比XPath快。且语法也比较简洁。

不过CSS对于初学者而言比较复杂。

使用:find_element_by_css_selector("CSS")

实例:

7.1通过id属性定位元素

#号表示通过id属性来定位元素

find_element_by_css_selector("#kw")

7.2通过class属性定位元素

.号表示通过class属性来定位元素

find_element_by_css_selector(".s_ipt")

7.3通过标签名定位元素

find_element_by_css_selector("input")

7.4通过属性定位元素(挺常用的)

find_element_by_css_selector("[name='wd']")

find_element_by_css_selector("[maxlength='255']")

属性值包含某个值

属性值包含wd:适用于由空格分隔的属性值。

find_element_by_css_selector("[name~='wd']")

7.5父子定位元素

查找有父亲元素的标签名为span,它的所有标签名叫input的子元素

find_element_by_css_selector("span>input") 

7.6组合定位元素

标签名#id属性值:指的是该input标签下id属性为kw的元素

find_element_by_css_selector("input#kw")

标签名.class属性值:指的是该input标签下class属性为s_ipt的元素

find_element_by_css_selector("input.s_ipt")

标签名[属性=’属性值‘]:指的是该input标签下name属性为wd的元素

find_element_by_css_selector("input[name='wd']")

父元素标签名>标签名.class属性值:指的是span下的input标签下class属性为s_ipt的元素

find_element_by_css_selector("span>input.s_ipt")

多个属性组合定位元素(挺常用的)

指的是input标签下id属性为kw且name属性为wd的元素

find_element_by_css_selector("input.s_ipt[name='wd']")

指的是input标签下name属性为wd且maxlength为255的元素

find_element_by_css_selector("input[name='wd'][maxlength='255']")

比较复杂的CSS定位可查看

http://www.360doc.com/content/13/1105/10/11675837_326750173.shtml

http://www.360doc.com/content/13/1105/10/11675837_326750240.shtml

 

比较懒惰的方法:

使用搜狐浏览器的firebug工具,复制CSS路径,不过这种方式对层级要求高,到时候自己再修改下。

 

8.通过XPath定位元素

XPath是一种XML文档中定位元素的语言。该定位方式也是比较常用的定位方式。

使用:find_element_by_xpath("XPath")

实例:

8.1通过属性定位元素

find_element_by_xpath("//标签名[@属性='属性值']")

id属性:

find_element_by_xpath("//input[@id='kw']")

class属性:

find_element_by_xpath("//input[@class='s_ipt']")

name属性:

find_element_by_xpath("//input[@name='wd']")

maxlength属性:

find_element_by_xpath("//input[@maxlength='255']")

8.2通过标签名定位元素

指所有input标签元素

find_element_by_xpath("//input")

8.3父子定位元素

查找有父亲元素的标签名为span,它的所有标签名叫input的子元素

find_element_by_xpath("//span/input") 

8.4根据元素内容定位元素(非常实用)

find_element_by_xpath("//p[contains(text(),'京公网')]") 

<p id="jgwab"> <i class="c-icon-jgwablogo"></i> 京公网安备11000002000001号 </p>

注:contains的另一种用法

//input[contains(@class,'s')]

说明class属性包含s的元素。

8.5组合定位元素

//父元素标签名/标签名的属性值:指的是span下的input标签下class属性为s_ipt的元素

find_element_by_xpath("//span/input[@class='s_ipt']")

多个属性组合定位(挺常用的)

指的是input标签下id属性为kw且name属性为wd的元素

find_element_by_xpath("//input[@class='s_ipt' and @name='wd']")

指的是p标签下内容包含“京公网”且id属性为jgwab的元素

find_element_by_xpath("//p[contains(text(),'京公网') and @id='jgwab']")  

比较懒惰的方法:

使用搜狐浏览器的firebug工具,复制XPath路径,不过这种方式对层级要求高,到时候自己再修改下。

 

9.通过By定位元素

使用:find_element(定位的类型,具体定位方式)

定位的类型包括By.ID,By.NAME,By.CLASS_NAME,By.TAG_NAME,By.LINK_TEXT,By.PARTIAL_LINK_TEXT,By.XPATH,By.CSS_SELECTOR

具体定位方式参考上方1-8的说明。

实例:find_element(By.ID,'kw')

注意:使用By定位方式,需先导入By类。

from selenium.webdriver.common.by import By

 

 

 

 

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值