selenium使用CSS定位页面元素

本文介绍了CSS在网页元素定位中的应用,通过实例展示了如何使用CSS选择器进行定位,并对比了CSS与XPath的区别,强调了CSS定位的简洁、灵活性和速度优势,建议优先考虑使用CSS进行网页元素定位。
摘要由CSDN通过智能技术生成

一、CSS简介

CSS 指层叠样式表 (Cascading Style Sheets)

CSS 选择器参考手册:http://www.w3school.com.cn/cssref/css_selectors.asp



二、定位实例

1、以如下html定位为例:

[html]  view plain  copy
  1. <span style="font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3.  <head>  
  4.   <title> css locate </title>  
  5.  </head>  
  6.  <body>  
  7.   <div class="formdiv">  
  8.     <form name="fnfn">  
  9.         <input name="username" type="text"></input>  
  10.         <input name="password" type="text"></input>  
  11.         <input name="continue" type="button"></input>  
  12.         <input name="cancel" type="button"></input>  
  13.         <input value="SYS123456" name="vid" type="text">  
  14.         <input value="ks10cf6d6" name="cid" type="text">  
  15.     </form>  
  16.     <div class="subdiv">  
  17.         <a href="http://www.baidu.com" id="baiduUrl">baidu</a>  
  18.         <ul id="recordlist">  
  19.             <p>Heading</p>  
  20.             <li>Cat</li>  
  21.             <li>Dog</li>  
  22.             <li>Car</li>  
  23.             <li>Goat</li>  
  24.         </ul>  
  25.     </div>  
  26.   </div>  
  27.  </body>  
  28. </html>  
  29.  </span>  

2、CSS匹配实例:

cssSelector匹配
css=div<div class="formdiv">
css=div.formdiv<div class="formdiv">
css=#recordlist
css=ul#recordlist
<ul id="recordlist">
css=div.subdiv p<p>Heading</p>
css=div.subdiv>ul>p<p>Heading</p>
css=form+div<div class="subdiv">
css=p+li<li>Cat</li>
css=p~li<li>Cat</li> 得到4个li中的第一个
css=form>input[name=username]<input name="username" type="text"></input>
css=input[name$=id][value^=SYS]<input value="SYS123456" name="vid" type="text">
css=input[value*='SYS']<input value="SYS123456" name="vid" type="text">
css=a:link<a href="http://www.baidu.com">baidu</a>
css=input:first-child<input name="username" type="text"></input>
css=input:last-child<input value="ks10cf6d6" name="cid" type="text">
css=li:nth-child(2)<li>Cat</li> 因为这个li是ul下的第二个元素,所以是child(2)
css=:root<html>
csdn表格不显示边框,所以截个图好看点:



三、XPATH和CSS定位比较

  还是以上面的html为例:

定位方式XPathCSS
标签//divdiv
By id//div[@id='recordlist']div#recordlist
By class//div[@class='subdiv']
//div[contains(@class,'subdiv')]
div.subdiv
By 属性//input[@name='username']input[name=username]
input[name^=user]
input[name$=name]
input[name*=erna]
定位子元素//ul[@id='recordlist']/*
//ul/p
ul#recordlist>*
ul#recordlist>p
定位后代元素//div[@class='subdiv']//pdiv p
By index//li[4] 定位第四个lili:nth-child(5)
By content//li[contains(text(),'Goa')]li contains('Goa') 该方法
已经废弃
根据子元素回溯定位父元素//*[./a[@id='baiduUrl']] 
//div[.//p[text()='Heading']]
匹配到:<div class="subdiv">
根据兄弟元素定位//ul[preceding-sibling::a[@id='baiduUrl']]
//ul[preceding-sibling::a[//div[@class='subdiv']/a]]
都匹配到:<ul id="recordlist">
a+ul
a#baiduUrl+ul
匹配到:<ul id="recordlist">
截图如下:


    注意:根据兄弟元素定位时只能从上面的兄弟找下面的兄弟,如:css=p+li,写成li+p是不行的。


可以看到,CSS定位语法比XPath更为简洁、灵活,而且CSS定位的速度还比XPath快,推荐使用CSS定位


原文地址:https://blog.csdn.net/galen2016/article/details/71106900


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值