【WebDriver】selenium使用CSS定位页面元素
2017-05-04 10:04
531 查看
一、CSS简介
CSS 指层叠样式表 (Cascading Style
Sheets)
CSS 选择器参考手册:http://www.w3school.com.cn/cssref/css_selectors.asp
二、定位实例
1、以如下html定位为例:
2、CSS匹配实例:
csdn表格不显示边框,所以截个图好看点:
三、XPATH和CSS定位比较
还是以上面的html为例:
截图如下:
注意:根据兄弟元素定位时只能从上面的兄弟找下面的兄弟,如:css=p+li,写成li+p是不行的。
可以看到,CSS定位语法比XPath更为简洁、灵活,而且CSS定位的速度还比XPath快,推荐使用CSS定位
CSS 指层叠样式表 (Cascading Style
Sheets)
CSS 选择器参考手册:http://www.w3school.com.cn/cssref/css_selectors.asp
二、定位实例
1、以如下html定位为例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> css locate </title> </head> <body> <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"> <a href="http://www.baidu.com" id="baiduUrl">baidu</a> <ul id="recordlist"> <p>Heading</p> <li>Cat</li> <li>Dog</li> <li>Car</li> <li>Goat</li> </ul> </div> </div> </body> </html>
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> |
三、XPATH和CSS定位比较
还是以上面的html为例:
定位方式 | XPath | CSS |
标签 | //div | div |
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']//p | div p |
By index | //li[4] 定位第四个li | li: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定位
相关文章推荐
- 在Selenium WebDriver中使用By.Xpath快速定位页面元素
- 在Selenium WebDriver中使用By.Xpath快速定位页面元素
- 【selenium学习笔记】webdriver对页面元素的操作
- 使用selenium webdriver从隐藏元素中获取文本
- Selenium(五)――webdriver 之操作页面元素
- selenium webdriver学习(十一)------------如何等待页面元素加载完成
- selenium webdriver学习-怎么等待页面元素加载完成
- 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式共八种,现分别介绍如下
- Selenium WebDriver等待页面元素加载完成
- selenium webdriver xpath 定位页面元素
- selenium webdriver学习 -怎么等待页面元素加载完成
- selenium webdriver学习(四)------------定位页面元素
- selenium webdriver学习(四)------------定位页面元素(转)
- Selenium_webdriver获取iframe子页面元素
- Webdriver如何解决页面元素过期:org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up
- selenium webdriver学习(十一)-怎么等待页面元素加载完成
- 使用Selenium-webdriver对页面进行截图操作
- 【selenium webdriver】 XPath 多条件查询语句(处理同一个页面上出现相同文本按钮的动态ID元素定位)
- Selenium(四)――webdriver 之定位页面元素
- webdriver定位页面元素时使用set_page_load_time()和JavaScript停止页面加载