5.5. 定位
元素定位是一个做WEB UI自动化经常使用的,非常重要,但掌握并不十分困难
5.5.1. HTML
HTML是一种标记语言,在前端中的作用是告诉浏览器展示什么内容,比如展示一个输入框,展示一个表格或者按钮等 CSS是用来告诉浏览器怎么展示这些元素,比如展示成什么颜色,大小以及一些其它特性 Javascript是用来做交互的,比如点击一个按钮后,提交数据发送给服务器,或者增加/移除一个元素 我们在selenium webdriver中定位元素,了解下HTML就可了 看下面的一个页面
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>DEMO</title>
<link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<form class="form-horizontal" role="form">
<!--名字输入框-->
<div class="form-group">
<label for="firstname" class="col-sm-2 control-label">名字</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="firstname" id="firstname" placeholder="请输入名字">
</div>
</div>
<!--姓氏输入框-->
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">姓</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="lastname" id="lastname" placeholder="请输入姓">
</div>
</div>
<!--记得我-->
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label> <input type="checkbox" name="rememberMe" id="rememberMe"> 请记住我 </label>
</div>
</div>
</div>
<!--登录-->
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default" name="loginButton" id="loginButton">登录</button>
</div>
</div>
</form>
</body>
</html>
5.5.2. ID、name、class name…
除了xpath和css selector外,其它的定位方法都是比较简单的,我们一一说明
通过ID定位:
ID就像是学生的学号或者身份证,一般不会重复,所以如果需要定位的元素有这个属性,用ID定位就可以了 针对我们上方的html中的名字输入框,代码如下:
driver.find_element_by_id('firstname')
通过name定位: name就像是每个学生的姓名,因为可能会重名(比如说一班和二班都有叫小明的),所以不是特别可靠,使用时需要注意 针对我们上方的html中的名字输入框,代码如下:
driver.find_element_by_name('firstname')
通过classname定位:*
classname是html元素中的class属性,可能有多个如 <button class=”button submit”>按钮</button> ,使用时,选择一个class属性就可以,比如button或者submit
我们上面的html中,使用classname是无法选择到姓名输入框的,因为会选到多个,所以会默认返回第一个元素,建议拿不准时不要使用
除此之外还有通过tab_name、link_text等 ,不过并不常用
XPath:
XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。