基于selenium的元素定位

基于selenium的元素定位方法

通过id定位

通常来讲,一个网页的id和name都是唯一的,所以元素具有id和name属性,那么可以直接使用id和name进行定位。
driver.find_element(By.ID, 'kw')
或者
driver.find_element_by_id('kw') ,这个方法实际就是调用的find_element实现的

通过name定位

name也通常具有唯一性

通过XPATH定位

xpath可以用于selenium和appium进行元素定位,比较万能;但有一个缺点是,xpath定位比css selector定位速度要慢很多,因为xpath是针对所有元素从头到尾的一点点遍历
xpath的常用语法(表达式):
1、//*[@id='kw']     在所有元素中查找id值为kw的元素,查找其他属性的话直接按格式替换掉id和对应的值就可以
   其中 //*代表所有元素,
2、/div/a    查找div下所有子元素a(注意这里仅仅是子元素,不包括子元素的子元素)
   /div/a[1]   如果查找到的子元素a不是唯一,那么可以使用a[1]表示获取第一个子元素a
   /div/a[last()]   表示获取最后一个子元素a
   /div/a[last()-1]   
3、/div//a   注意这里的变成了‘//’,表示查找div下的所有子孙元素a,包括子元素的子元素,区分子元素和子孙元素
4、/    表示从跟节点获取
   //  表示从任何节点选取,而不考虑他们的位置
   .  表示选取当前节点
   ..  表示选取当前节点的父节点
   @  表示选取属性
xpath定位的python代码:
以百度的首页举例
driver.find_element(By.XPATH, ‘//*[@id="kw"]’)
或者
driver.find_element_by_xpath(‘//*[@id="kw"]’)
xpath定位技巧小结:可以使用谷歌浏览器,鼠标浮动到想要定位的元素上,点击右键,选择‘检查’选项,进入调试页面,在elements标签页会直接该元素的网页代码,可以先找到该具有id或者name属性的上级节点,然后再逐级或者跨级进行元素定位

通过css selector定位

css比xpath要快,使用的是样式定位
常用css selector语法:
.       .c-tips-container    表示选择class=“c-tips-container”的所有元素
#     #kw     表示选择id="kw"的所有元素
*                表示选择所有元素
element      p        表示选择所有<p>元素
element,element   div,p   表示所有的div和p元素
element element    div p   表示div元素内部所有的p元素,相当于xpath的//
element>element   div>p   表示父元素为div元素的所有p元素,相当于xpaht的/
element+element   div+p   表示紧接在div元素之后的所有p元素
[atrribute]     [target]     表示选择带有target属性的所有元素
[atrribute=value]    [targe=_blank]   表示选择target=“_blank”的所有元素
:nth-child(n)    p:nth-child(2)   表示选择属于父元素的第二个子元素p
css selector定位的python代码:
driver.find_element(By.CSS_SELECTOR, ‘#kw’)
或者
self.driver.find_element_by_css_selector('#kw')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值