Python+selenium简单的元素定位方法

  1. id和name定位
    安装firebug查看页面元素
    find_element_by_id(“kw”)
    find_element_by_name(“wd”)

  2. tag和class定位

find_element_by_class_name(“s_ipt”)
find_element_by_tag_name(“input”)
注:这里不建议使用tag name进行定位,因为在一个页面中具有相同tag name 的元素是很容易出现。

  1. link text 与partial link text 定位
    在这里插入图片描述
    find_element_by_partial_link_text(“把”)
    find_element_by_link_text(“把百度设为主页”)

  2. 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’]

  1. CSS定位

1)css选择器的语法

语法作用
*通用元素选择器,匹配任何元素
E标签选择器,匹配所有使用E 标签的元素
.infoclass 选择器,匹配所有class 属性中包含info 的元素
#footerid 选择器,匹配所有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>

欢迎评论,互相交流,谢谢!
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值