元素定位

来源:互联网 发布:手机版淘宝怎么买二手 编辑:程序博客网 时间:2024/04/30 09:21

一、id 和name 定位
假如把一个元素看作一个人的话,id 和name可以看作一个人的身份证号和姓名。当然,这些属性值是否唯一要看前端工程师如何设计了。
百度搜索框和搜索按钮:

<input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">……<input id="su1" class="bg s_btn" type="submit" onmouseout="this.className='bg s_btn'" onmousedown="this.className='bg s_btn s_btn_h'" value="百度一下">

根据上面的例子,百度输入框可以取id 或 name进行定位。(前提是id和name的值在当页面上唯一)
id = kw1
name = wd
在Robot framework 中就是这样写的:

Input Text id=kw1 robot framework学习 input text name=wd robot framework学习

Input text 用于输入框的关键字,“robot framework学习”是要给输入框输入的内容。
百度按钮只id数据可以利用:
Id=su1

Click Button id=su1

Click Button是按钮点击的关键字。
二、xpath定位

  假如,一个人没身份证号没名字怎么找呢?想想你是怎么找朋友吃饭的,他手机不通,电话不回呢?直接上他家去呗,那你一定有他家住址,xx市xx区xx路xx号。Xpath 就可以通过这种层级关系找到元素。

来看看百度输入框在整个页面上的位置吧:

<html>    <head>    <body link="#0000cc">    <div id="wrapper" style="display: block;">        <div id="debug" style="display:block;position:absolute;top:30px;right:30px;border:1px solid;padding:5px 10px;"></div>        <div id="u">        <div id="head">        <div id="content" style="display: block;">            <div id="u1" style="display: block;">            <div id="m">                <p id="lg">                <p id="nv">                <div id="fm">                    <form id="form1" class="fm" action="/s" name="f1">                        <span class="bg s_ipt_wr">                            <input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">

1、Xpath的绝对路径:

Xpath = /html/body/div[1]/div[4]/div[2]/div/form/span[1]/input

我们可以从最外层开始找,html下面的body下面的div下面的第4个div下面的….input标签。通过一级一级的锁定就找到了想要的元素。
2、Xpath的相对路径:

绝对路径的用法往往是在我们迫不得已的时候才用的。大多时候用相对路径更简便。
2.1、元素本身:

Xpath同样可以利用元素自身的属性:

Xpath = //*[@id=’kw1’]

//表示某个层级下,*表示某个标签名。@id=kw1 表示这个元素有个id等于kw1 。

当然,一般也可以制定标签名:

Xpath = //input[@id=’kw1’]

元素本身,可以利用的属性就不只局限为于id和name ,如:

Xpath = //input[@type=’text’]

Xpath = //input[@autocomplete=’off’]

但要保证这些元素可以唯一的识别一个元素。
2.2、找上级:

  当我们要找的一个人是个刚出生的婴儿,还没起名子也没有入户口(身份证号),但是你会永远跟在你父亲的身边,你的父亲是有唯一的名字和身份证号的,这样我们可以先找到你父亲,自然就找到你的。

元素的上级属性为:

<form id="form1" class="fm" action="/s" name="f1">  <span class="bg s_ipt_wr">    <input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">

找爸爸:

xpath = //span[@class=’bg s_ipt_w’]/input

如果爸爸没有唯一的属性,可以找爷爷:

xpath = //form[@id=’form1’]/span/input

这样一级一级找上去,直到html ,那么就是一个绝对路径了。
2.3、布尔值写法:

  如果一个人的姓名不是唯一的,身份证号也不是唯一的,但是同时叫张三 并且 身份证号为123 的人却可以唯一的确定一个人。那么可以这样写:

Xpath = //input[@id=’kw1’ and @name=’wd’]

可以and ,当然也可以or :

Xpath = //input[@id=’kw1’ or @name=’wd’]

但or的实际意义不太。我们一般不需要说,找的人名字或者叫张三,或者身份证号是123 也可以。
Robot framework 中的写法:

Input Text xpath = //*[@id=’kw1’] robot framework学习 input text xpath = //span[@class=’bg s_ipt_w’]/input robot framework学习 input text xpath = //input[@id=’kw1’ and @name=’wd’] robot framework学习

三、CSS定位

  Css的定位更灵活,因为他它用到的更多的匹配符和规格。
  这里写图片描述
  同样以百度输入框的代码,我们来看看CSS如何定位。
  

<form id="form1" class="fm" action="/s" name="f1">  <span class="bg s_ipt_wr">    <input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">

id定位:

css=#kw1

class定位:

css=.s_ipt

其它属性:

css=[name=wd]

css=[type=text]

css=[autocomplete=off]

父子定位:

css=span > input

css=form > span > input

根据标签名定位:

css=input
Robot framework 中的写法:

Input Text css=#kw1 robot framework学习 input text css=.s_ipt robot framework学习 input text css=[name=wd] robot framework学

同样一个元素,根基CSS的不同规则,可能有几十上百种写法。CSS更灵活强大,但是相比xpath 的学习成本为更高。但是css和xpath 两种定位方式是一定要学会一种,不然你的自动化工作更无法开展。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 布莱克本 布莱克尼 帕特里克奥布莱恩特 大魔王布莱克 我是布莱克 布莱亚克 托电布莱克在线 贾斯汀汀布莱克出柜 hp布莱克家的首席公主 布莱克原来你是个女的 布莱克 莱弗利 贾斯汀布莱克 布莱克图片 布莱克吧 女巫布莱尔事件原型 魔兽世界希尔斯布莱德 希尔斯布莱德城镇文档在哪 布莱尔学院 女巫布莱尔3 托尼布莱尔 布莱德利 布莱德 布莱德索 瓦妮莎布莱恩特 布莱恩 奥布莱恩 布莱恩泰 托马斯布莱恩特 乔布莱恩特 布莱恩特 奥布莱恩杯 布莱恩米尔斯 大卫布莱恩 爱娃布莱恩 堪布莱恩学院留学 堪布莱恩学院奖学金 堪布莱恩学院录取 布莱斯斯巴达 布莱斯峡谷 布莱希特 布莱恩特大学