本章节开始我们先看一张百度页面图片
这其实就是百度的首页,在这张页面上有输入框、按钮和文字链接,当然还有图片,页面的底部还有一行文字。自动化要做的就是模式鼠标和键盘来操作这些元素,或点击,或输入,或右击,甚至是鼠标拖动等操作。
那么我们要想操作这些元素的前提是需要找到它们。那么如何找到他们呢?自动化工具可不像我们一样可以通过肉眼来分辨页面上的元素,并且知道是它们是做什么用的。那么我们来看看这些元素的真实面目。
通过前端工具,我们看可以看到页面上的元素都是由一行一行的代码组成。它们之间有层级的组织起 来,每个元素有不同的标签名和属性值。那么在 Selenium 当中就是通过这信息来找到不同的元素的。
WebDriver 提供了八种元素定位方法:
- id
- name
- classname
- tagname
- linktext
- partiallink
- text
- xpath
- cssselector
在 Java 语言中对应的定位方法如下:
import org.openqa.selenium.By;
...
findElement(By.id())
findElement(By.name())
findElement(By.className())
findElement(By.tagName())
findElement(By.linkText())
findElement(By.partialLinkText())
findElement(By.xpath())
findElement(By.cssSelector())
之后的文章我们就逐一的来看这些定位方法的使用。在此之前,我们拷取百度首页的前端代码,以定位页面上的元素为例进行讲解。
<html>
<head>
<body>
<script>
<div id="wrapper" style="display: block;">
<div id="debug" style="display:block;position:..">
<script>
<div id="head" class="s_down"> <div class="head_wrapper">
<div class="s_form">
<div class="s_form_wrapper">
<div id="lg">
<a id="result_logo" οnmοusedοwn="return .." href="/">
<form id="form" class="fm" action="/s" name="f">
<input type="hidden" value="utf-8" name="ie">
<input type="hidden" value="8" name="f">
<input type="hidden" value="1" name="rsv_bp">
<input type="hidden" value="1" name="rsv_idx">
<input type="hidden" value="" name="ch">
<input type="hidden" value="02.." name="tn">
<input type="hidden" value="" name="bar">
<span class="bg s_ipt_wr">
<input id="kw" class="s_ipt" autocomplete="off" maxlength="100" value="" name="wd">
</span>
<span class="bg s_btn_wr">
<input id="su" class="bg s_btn" type="submit" value="百度一下">
</span> ....
</body>
</html>