-
id和name定位
find_element_by_id(“kw”)
find_element_by_name(“wd”) -
tag和class定位
find_element_by_class_name(“s_ipt”)
find_element_by_tag_name(“input”)
注:这里不建议使用tag name进行定位,因为在一个页面中具有相同tag name 的元素是很容易出现。
-
link text 与partial link text 定位
find_element_by_partial_link_text(“把”)
find_element_by_link_text(“把百度设为主页”) -
XPath定位(XPath 是一种在XML 文档中定位元素的语言。)
<html class="w3c">
<body>
<div class="page-wrap">
<div id="hd" name="q">
<form target="_self" action="http://www.so.com/s">
<span id="input-container">
<input id="input" type="text" x-webkit-speech="" autocomplete="off"
suggestwidth="501px" >
1)绝对路径定位:
find_element_by_xpath("/html/body/div[2]/form/span/input")
2)相对路径定位:
find_element_by_xpath("//input[@id=’input’]") #通过自身的id 属性定位
find_element_by_xpath("//span[@id=’input-container’]/input") #通过上一级目录的id 属性定位
find_element_by_xpath("//div[@id=’hd’]/form/span/input") #通过上三级目录的id 属性定位
find_element_by_xpath("//div[@name=’q’]/form/span/input")#通过上三级目录的name 属性定位
通过上面的例子,我们可以看到XPath 的定位方式非常灵活和强大的,而且XPath 可以做布尔逻辑运算,例如://div[@id=’hd’ or @name=’q’]
- CSS定位
1)css选择器的语法
语法 | 作用 |
---|---|
* | 通用元素选择器,匹配任何元素 |
E | 标签选择器,匹配所有使用E 标签的元素 |
.info | class 选择器,匹配所有class 属性中包含info 的元素 |
#footer | id 选择器,匹配所有id 属性等于footer 的元素 |
E,F | 多元素选择器,同时匹配所有E 元素或F 元素,E 和F 之间用逗号分隔 |
E > F | 子元素选择器,匹配所有E 元素的子元素F |
E + F | 毗邻元素选择器,匹配紧随E 元素之后的同级元素F (只匹配第一个) |
E ~ F | 同级元素选择器,匹配所有在E 元素之后的同级F 元素 |
E[att=‘val’] | 属性att 的值为val 的E 元素(区分大小写) |
E[att^=‘val’] | 属性att 的值以val 开头的E 元素(区分大小写) |
E[att$=‘val’] | 属性att 的值以val 结尾的E 元素(区分大小写) |
E[att*=‘val’] | 属性att 的值包含val 的E 元素(区分大小写) |
E[att1=‘v1’][att2*=‘v2’] | 属性att1 的值为v1,att2 的值包含v2 (区分大小写) |
E:contains(‘xxxx’) | 内容中包含xxxx 的E 元素 |
E:not(s) | 匹配不符合当前选择器的任何元素 |
2)示例
<div class="formdiv">
<form name="fnfn">
<input name="username" type="text"></input>
<input name="password" type="text"></input>
<input name="continue" type="button"></input>
<input name="cancel" type="button"></input>
<input value="SYS123456" name="vid" type="text">
<input value="ks10cf6d6" name="cid" type="text">
</form>
<div class="subdiv">
<ul id="recordlist">
<p>Heading</p>
<li>Cat</li>
<li>Dog</li>
<li>Car</li>
<li>Goat</li>
</ul>
</div>
</div>
通过CSS语法进行匹配:
locator | 匹配 |
---|---|
css=div、css=div.formdiv | < div class=“formdiv”> |
css=#recordlist、css=ul#recordlist | < ul id=“recordlist”> |
css=div.subdiv p、css=div.subdiv > ul > p | < p >Heading< /p> |
css=form + div | < div class=“subdiv” > |
css=p + li、css=p ~ li | 二者定位到的都是< li>Cat< /li>但是storeCssCount 的时候,前者得到1,后者得到4 |
css=form > input[name=username] | < input name=“username”> |
css=input[name$=id][value^=SYS] | < input value=“SYS123456” name=“vid” type=“hidden”> |
css=input:not([name$=id][value^=SYS]) | < input name=“username” type=“text”>< /input> |
css=li:contains(‘Goa’) | < li>Goat< /li> |
css=li:not(contains(‘Goa’)) | < li>Cat< /li> |
欢迎评论,互相交流,谢谢!