cssSelector简介
CSS3选择器
在CSS中,选择器是一种模式,用于选择需要添加样式的元素。
"CSS"列指示该属性是在哪个CSS版本中定义的(CSS1、CSS2还是CSS3)
更多详情,请参考 CSS 选择器参考手册
一、定位方法:
1.通过id定位 如:<input id="kw">
driver.findElement(By.cssSelector("div#kw"));
2.通过class定位 如:<input class="s_ipt">
driver.findElement(By.cssSelector("input.s_ipt"));
3.通过属性定位 如:<input name="wd">
driver.findElement(By.cssSelector("input[name=wd]"));
4.通过子元素定位
driver.findElement(By.cssSelector("div#u_sp>a"));
与xpath不同,css中用">"右箭头代表子元素,而xpath中用的"/"单斜杠表示
5.通过后代元素定位
driver.findElement(By.cssSelector("div#u_sp a"));
与xpath不同,css中用" "空格表示后代元素,而xpath中用的"//"双斜杠表示
6.通过元素的index定位
driver.findElement(By.cssSelector("div#u_sp>a:nth-child(1)"));
与xpath不同,css中用的写法":nth-child(1)",xpath中用的写法"[1]"
7.通过兄弟元素定位
driver.findElement(By.cssSelector("span#s_kw_wrap+input"));
xpath中用的写法"//input[preceding-sibling::span[@id='s_kw_wrap']]";
需要注意的是,css的定位到是兄弟元素下面的兄弟元素,而且只是下面的第1个元素(如:span元素id为"s_kw_wrap"有很多input兄弟元素,它只定位到它下面的第1个兄弟元素);而xpath不同的是可以定位到所有兄弟元素;
二、如何查看定位的元素个数
上面讲解了css常用的定位方法,但是不能确定找出元素是唯一的,也许可能查找多个元素,Firefox可以借助FirePath插件可以快速定位,并且显示定位到的元素个数,Chrome其实也可以查看元素个数
方法:
1.打开chrome浏览器的开发者工具(F12),然后选择Console;
2.在上边可以输入要查找的元素定位,如:$('div#kw');
3.Console会输出一段脚本,点击箭头展开,里边会有一个length字段,后边的数字就代表定位到的元素个数
如下图:
或者开发者工具情况下按control+f ,把定位的路径输入到里边,也可以查看定位的元素个数