您的位置:首页 > 编程语言 > Python开发

python-day0003-搭建基于python的selenium自动化测试---元素定位

2016-06-07 22:16 851 查看
一般的web页面都包含了文字链接、输入框、按钮、图片、下拉框等多种不同类型的要素。自动化则是通过一定的代码手段,模拟人点击鼠标、键盘、输入文字等操作。要操作这些元素,首先要定位到被操作的对象,如一个文本输入框,一个按钮等。以下面的代码为例:

<div id="loginBlock" class="login tab-2">
<div class="loginFunc">
<div id="appLoginTab" class="loginForm" style="display: none;">
<div id="normalLoginTab" class="loginForm" style="display: block;">
<form id="login163" target="frameforlogin" action="http://mail.163.com/" method="post" name="login163">
<input id="savelogin" type="hidden" value="0" name="savelogin">
<input id="url2" type="hidden" value="http://mail.163.com/errorpage/error163.htm" name="url2">
<div id="idInputLine" class="loginFormIpt showPlaceholder">
<b class="ico ico-uid"></b>
<input id="idInput" class="formIpt" type="text" value="" maxlength="50" name="username" title="请输入帐号" tabindex="1" autocomplete="off">
<span id="showdomain" class="domain">@163.com</span>
<div id="mobtips"></div>
<label id="idPlaceholder" class="placeholder" for="idInput">邮箱帐号或手机号</label>
<div id="idInputTest"></div>
</div>
<div id="normalLogin">
<div id="pwdInputLine" class="loginFormIpt showPlaceholder">
<b class="ico ico-pwd"></b>
<input id="pwdInput" class="formIpt formIpt-focus" type="password" name="password" title="请输入密码" tabindex="2">
<label id="pwdPlaceholder" class="placeholder" for="pwdInput">密码</label>
<p id="capsLockHint" style="display: none">大写状态开启</p>
</div>
</div>
……
</form>
<div id="loginExt" class="ext">
</div>
</div>


以上的代码来自163邮箱的登陆页面,如下图所示

现在我们要做的是,使用不同的方式,对页面中的元素进行定位。

以获取邮箱地址的输入框为例

1.使用id进行定位

这个方法在 上一篇文章中已经使用过了,这里再次记录一遍。获取方式为:

find_element_by_id("idInput")

通过id的属性值来定位元素

2.使用name定位,方式为

find_element_by_name("username")

通过name的属性值来定位。有些标签中并没有设置name属性,对于这类元素,则无法使用name的方式进行定位了

3.使用class定位(这里的class指的是html标签中的class属性),定位方法为:

find_element_by_class_name("formIpt")

其他的一些定位方式

4.对于每一个元素本身而言,都是一个标签,即一个tag, 在一个网页中,每种标签的个数都是不确定的个数,很难通过tag的方式进行定位。但可以简单了解一下tag的定位方法:如查找<label>标签

find_element_by_tag_name("label")

5.通过lnk定位



<a id="baidu" href="http://www.baidu.com">百度</a>

<a id="sougo" href="http://www.sougo.com">搜狗</a>

那么,当我们需要定位到搜狗时,使用link定位时,则只需要使用下面的方式就可以定位到:

find_element_by_link_name("搜狗");

此方法是通过元素标签对之间的文本信息来定位元素

6.如果文本链接超长,那么可以使用文本链接中的一部分文字来进行定位,这时,就需要用到partial link 来定位了。方法如下:

find_element_by_partial_link_name("部分文字")

一般习惯较好的程序员,在编写html网页程序时,都会为关键元素的标签加上id和name属性。那么,我们可以直接根据id或属性就能准确地定位到查找的元素。

7.使用XPath定位

find_element_by_xpath("//input[@id='idInput']")

// 表示当前页面的某个目录下

input 表示定位元素的标签名

[@id='idInput'] 表示这个元素的id属性值等于idInput

如果不想指定标签名,可以使用*来表示

即:

find_element_by_xpath("//*[@id='idInput']")

其他还有很多定位的方法,以后用到了,再记录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息