selenium python (二) 元素定位方法

定位的原则就是:id name class 优先,强烈建议和前端哥哥搞好关系。定位就不是问题:实在不行就xpath和css大部分偶可以定位到。

webdriver定位的方法是通过一个By类,By类中有许多的属性,常用的有已下几个:

NO1.

ID:dom元素首选的定位方式,id是唯一,定位速度快。(和fe处好关系,用id定位杠杠的)

 

如By.id(“kw”) 就可以定位到百度的搜索框

NO2.

Name:表单定位为name首选,因为表单肯定会有一个name的属性。

如上图中的百度搜索框,也可以用By.name(“wd”)来定位

NO3.

class 一般代表着某一种样式属性,所有很有可能是重复的,不能精准的定位By.classname(“s_ipt”)来定位。

NO4.

linktext 链接定位 (如果元素中间有空格 请注意)

 

对于百度首页新闻这个链接,我们可以直接用By.linkText(“新闻”) 来查找

NO5.

xpath定位:辅助的工具 firefinder firepath 两个firefox的插件工具。

第一种xpath:绝对路径式的定位 By.xpath("html/body/div/form/input")

第二种xpath:相对的路径定位 By.xpath("//input") 一般要结合某些特定的属性值

//input 找到所有的input

@id=kw 是找到id属性=kw的

例如 By.xpath("//input[@id='kw']")

第三种xpath:使用部分属性值匹配:By.xpath("//input[starts-with(@id,'nice')]")

By.xpath("//input[contains(@id,'白菜')]")

xpath定位方法有些写的非常的长,如果不是非常熟知xpth的语法,请谨慎的使用。原因很简单,例如:By.xpath("html/body/div/form/input")这个地位的方式是绝对的定位,如果pm在其中去掉了一个属性,你的xpath就得重新的定位,xpath就使用不了。而且在茫茫多的xpath中,如何去寻找你哪一个出了问题,所以如果不懂xpath的语法,请谨慎。一切都是为了维护整个项目,简单简单!

NO6.

css定位:简单的介绍一下css的语法。

介绍三个选择器:

1.id的选择器:# 开头

2.类的选择器:. 开头

3.属性的选择器:[key=’value’]  

By.cssSelector(“input[name=’username’]”);

 

作为一个IT行业的人,一般使用的浏览器为chrome和firefox,chrome自带了审查元素功能和xpath和css路径的复制功能,当然也不是每一个都能复制成功。

Firefox就可以扩展很多插件了:

 

第一个firebug,在浏览器中右击就可以查看页面的元素。

 

 

第二个fireFinder和firepath 都是寻找元素xpath路径的,我喜欢结合xpath语法然后去对比和验证自己寻找的元素路径对不对。

安装后,按F12就可以看到如下:

 

第三个如果你不喜欢打开新的页面,使用这个插件可以只在本页加载页面结果。

原文地址:https://www.cnblogs.com/dvbbs2012/p/5019657.html