一、以下截图为用FireBug定位的用火狐(Firefox)浏览器打开的百度首页,下面所讲述的八种定位方法,就是以该截图中的百度输入框为例子。
通过它可以方便的查看页面上的元素,根据元素路径或是标签或是属性进行定位。
②、FirePath是FireBug插件扩展的一个工具,用来编辑、检查和生成的XPath表达式、CSS选择器。通过XPath和CSS可快速定位页面上的元素。如下图所示:
二、首先,我们一起来分析一下 下面的这几行代码
三、WebDriver的八种元素定位方法:
id在HTML文档中必须是唯一的,可以想象成学生在学校的学号,公民的身份证号。
①绝对路径定位(很不推荐该种定位方法,若页面样式稍微有点变化,元素就很容易找不到)
若文中内容有误,希望大家指正,谢谢。
版权声明:本文为博主原创文章,未经博主允许不得转载。 /LhyUp/article/details/
上面是百度输入框的代码
webdriver属于Selenium体系中设计出来操作浏览器的一套API,支持多种语言,本文中主要讲解为对元素的定位,不涉及具体语言,在某些不同语言中有差异性的地方,本文使用python语言作为示例(比如xpath中的部分语句)。
废话少说,下面就开始介绍几种元素定位方式:
在介绍之前,还是要废话一下,因为我们需要了解一下基本的HTML知识才能进行元素定位。可以以百度的首页为例,可以通过浏览器右键->查看网页源代码的方式查看HTML代码,或者通过开发者工具的方式查看(推荐此种方式,看的比较全面和“真实”),具体不同浏览器打开开发者工具的方式不同,在此不做过多介绍。
通过对网页的观察,我们可以发现一般的HTML文本具有以下几个特征:
(3)标签之间可能会有文本数据
说完了以上这些内容,就可以真正的看看如何定位元素啦
partial_link_text定位于link_text定位原理相同,只不过有些文本链接太长,此时就可以通过部分的链接文字进行匹配,比如定位
XPath是一种XML中使用的定位元素语言,HTML可以看成是XML语言的一种,所以也可以通过XPath定位HTML中的元素。XPath
有多种定位策略,但是他要求你能正确写出XPath的表达式,可以自己去百度一下用法,或者在开发者工具中很方便的在Elements窗口中
右键你要定位的元素,Copy->Copy XPath的方式直接得到他的XPath表达式。接下来详细讲解各个定位策略:
绝对路径定位就是根据HTML文档的文本结构,一层一层向下找到需要定位的文本内容,比如同样是找到百度搜索框的位置,可以
(2)通过元素属性定位
如果要找的元素本身没有一个能够准确定位的唯一属性,我们可以考虑通过上层元素来进一步定位。例如:
他的第一个span节点,再找到input节点。
有时候使用单一的属性难以区分一个元素,因此可以通过逻辑运算符来进行多个属性的判断进行元素定位操作。例如如下HTML文本:
注意,一般来说一个HTML文本中id是不会重复的,此处只是为了做一个例子。现在想定位第一个input标签,就可以使用以下语句:
CSS定位基本和以上几种方法本质类似,就大体说一下使用方法不再做细致的描述,以百度输入框的如下代码为例:
上面的写法的意思是我们要找的是一个input标签,这个input标签的父元素为span标签
这些写法的含义是我们要找的这个标签有一个autocomplete属性,而且这属性的值是"off"
对于这种表达可以从后往前看,我们要找的是一个input标签,这个input标签的class是s_ipt,而且这个input标签的父元素是span标签,
这个span标签的父元素是form标签,而且这个form标签的class是fm,满足以上所有条件的标签即为我们所找。
同样的,对于CSS选择器,可以在开发者工具中通过右键目标元素,Copy->Copy selector选项复制CSS选择器的表达式,操作类似XPath表达式