您的位置:首页 > 其它

Selenium2: web元素定位方法笔记

2017-04-13 00:00 323 查看
By.name("username")
By.id("username")
By.className("buttonStyle")
By.linkText("About Google")
By.partialLinkText("About")
===================================
By.cssSelector("标签名[属性名='属性值']")

^=        driver.findElement(By.cssSelector("标签名[属性名^='xxx']"));  匹配属性值以xxx开头的元素
$=        driver.findElement(By.cssSelector("标签名[属性名$='xxx']"));  匹配属性值以xxx结尾的元素
*=         driver.findElement(By.cssSelector("标签名[属性名^='xxx']"));  匹配属性值包含xxx的元素

driver.findElement(By.cssSelector("span[textContent='新闻']"));
=====================================
By.xpath()  : 重要!在Firefox和Chrome下速度很快,在IE下速度很慢。

starts-with()    driver.findElement(By.xpath("//input[stars-with(@id,'user')]"))
ends-with        driver.findElement(By.xpath("//input[ends-with(@id,'name')]"))
contains()        driver.findElement(By.xpath("//input[contains(@id,"ernam")]"))

driver.findElement(By.xpath("//span[contains(text(),'hello')]"))   包含匹配
driver.findElement(By.xpath("//span[text()='新闻']"))     绝对匹配

====================================== http://www.cnblogs.com/qingchunjun/p/4208159.html http://www.51testing.com/html/20/n-855520-2.html

====================================================
1. 当页面元素有id属性时,最好尽量用id来定位。但由于现实项目中很多程序员其实写的代码并不规范,会缺少很多标准属性,这时就只有选择其他定位方法。

2. xpath很强悍,但定位性能不是很好,所以还是尽量少用。如果确实少数元素不好定位,可以选择xpath或cssSelector。

3. 当要定位一组元素相同元素时,可以考虑用tagName或name。

4. 当有链接需要定位时,可以考虑linkText或partialLinkText方式。

===========================================================
页面有多个复选框时,要一次性get_visable_elements获取到所有,保存到临时变量里。不要多次get_visable_elements,浪费时间。
List<WebElement> wes_temp=get_visable_elements(driver,"//div[contains(@id,'appAdministratorAdd')]//span[contains(@id,'checkboxfield')]")
wes_temp.get(1).click()
wes_temp.get(3).click()
//    get_visable_elements(driver,"//div[contains(@id,'appAdministratorAdd')]//span[contains(@id,'checkboxfield')]").get(1).click()
//    get_visable_elements(driver,"//div[contains(@id,'appAdministratorAdd')]//span[contains(@id,'checkboxfield')]").get(3).click()

============================================================
20160608 页面有input,输入数据后,无法通过gettext得到输入的值,此时可以:
String str_temp_password = driver.findElement(By.name("password")).getAttribute("value")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: