webdriver属于Selenium体系中设计出来操作浏览器的一套API,支持多种语言,本文中主要讲解为对元素的定位,不涉及具体语言,在某些不同语言中有差异性的地方,本文使用python语言作为示例(比如xpath中的部分语句)。
废话少说,下面就开始介绍几种元素定位方式:
在介绍之前,还是要废话一下,因为我们需要了解一下基本的HTML知识才能进行元素定位。可以以百度的首页为例,可以通过浏览器右键->查看网页源代码的方式查看HTML代码,或者通过开发者工具的方式查看(推荐此种方式,看的比较全面和“真实”),具体不同浏览器打开开发者工具的方式不同,在此不做过多介绍。
通过对网页的观察,我们可以发现一般的HTML文本具有以下几个特征:
(1)由标签对组成
例如<html></html>,<body></body>,<div></div>,当然也包含一些像<input >,<br />这类的单独的一个封闭标签
(2)标签有各种属性
例如<div class="c-tips-container" id="c-tips-container"></div>
<form id="form" name="f" action="/s" class="fm">...</form>
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
(3)标签之间可能会有文本数据
例如<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
(4)标签有层级关系
例如,
<html>
<head>
</head>
<body>
</body>
</html>
说完了以上这些内容,就可以真正的看看如何定位元素啦
1. 通过id定位
从上面的HTML特征我们可以看到,标签内可以有属性,HTML文档规定id属性在HTML文档中必须唯一,类似于我们每个人的身份证一样。因此我们可以通过id属性来定位某个元素,比如定位百度的搜索框:
首先在通过开发者工具找到搜索框对应的HTML语句<input id="kw" name="wd" class="s_ip