(1)根据tagName---标签的名字------------By.cssSelector("input")
openBrowser("chrome");
driver.get("http://www.baidu.com");
// input框输入关键字
List<WebElement> Elements = driver.findElements(By.cssSelector("input"));
//找到多个input,如何定位自己要的input
//通过索引---自己数是第几个---一般不用这种方式去定位
}
一般找到多个值,就不用这种方式去定位(后续会讲到xpath)
(2) 根据ID---标签属性id的属性值
两种写法:
1.By.cssSelector("#ID属性值");//仅使用#id
2.By.cssSelector("input#kw");//使用html标签拼上#id
// 找到input框后输入搜索关键字
driver.findElement(By.cssSelector("#kw")).sendKeys("腾讯课堂");
driver.findElement(By.cssSelector("input#kw")).sendKeys("腾讯课堂");
总结:1 这里是根据ID的属性值来定位(属性值要唯一)
2 属性值前面要加#号,仅代表根据id属性来定位
driver.findElement(By.cssSelector("#wd")).sendKeys("腾讯课堂");
上面这段代码就会报错,找不到元素,wd是name的属性值,但是#会把它当作是根据id的属性值,而id的属性值不是wd,所有定位不到元素
(3)根据className(样式名).class形式
两种写法:
1.By.cssSelector(".className");//class属性值前面加点
2.By.cssSelector("input.className");//标签拼上样式
// input框输入关键字
driver.findElement(By.cssSelector("input#kw")).sendKeys("腾讯课堂");
//定位到百度一下按钮,点击
//driver.findElement(By.cssSelector(".bg.s_btn")).click();
driver.findElement(By.cssSelector("input.bg.s_btn")).click();
这里要注意:
(1)百度首页如果是 登录状态,百度一下的input框class属性值和未登录状态下,class属性值是不一样的,而selenium每次打开是一个全新的浏览器(未登陆,无缓存)
(2)class属性值前面要加点
(4)Css精确定位
根据元素属性,属性名=属性值,id,class等都可 写成这种形式
By.cssSelector("标签名[属性名='属性值']");
只能适应web