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

来源:互联网 发布:网络自学网初二下学期 编辑:程序博客网 时间:2024/04/27 23:08

一般的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']")


其他还有很多定位的方法,以后用到了,再记录。






0 0