首页 > 代码库 > Selenium->定位页面元素
Selenium->定位页面元素
注意:selenium-webdriver通过findElement() findElements()等find方法调用"By"对象来定位和查询元素。
By类只是提供查询的方式进行分类。
findElement返回一个元素对象否则抛出异常,
findElements返回符合条件的元素List,如果不存在符合条件的就返回一个空的list。
一、定位单个元素
<input id="kw" name="wd" class="s_ipt" value="" maxlength="100" autocomplete="off">
(1)element.findElement(By.className(name));
根据class名定位元素
WebElement element=driver.findElement(By.className("s_ipt")); System.out.print(element.getTagName());
输出结果是:
input
(2)element.findElement(By.id(name));
根据id名定位元素
WebElement element=driver.findElement(By.id("kw")); System.out.print(element.getTagName());
输出结果:
input
(3)element.findElement(By.name(name));
根据name名定位元素
getAttribute()获取指定属性的值
WebElement element=driver.findElement(By.name("wd")); System.out.print(element.getAttribute("id"));
输出结果:
kw
(4)element.findElement(By.linkText(name));
(5)element.findElement(By.partialLinkText(name));
(6)element.findElement(By.tagName(name));
(7)element.findElement(By.xpath(name));
(8)element.findElement(By.cssSelector(name));
二、定位多个元素
通过i标签名为input,获取到一个元素列表;
循环这个列表,输出属性为name的值。
public static void main(String[] args) { String url = "http://www.51cto.com"; WebDriver driver = new FirefoxDriver(); driver.navigate().to(url); List<WebElement> elements = driver.findElements(By.tagName("input")); for ( WebElement e : elements ) { System.out.print(e.getAttribute("name")+"\n"); } }
输出结果:
checkemailcheckareastepusernameemailemailexistusernameexistyanzhengexsituserpwdpassword2gzlygzly_othersshysshy_otherzwzw_othercodeagreeagree
三、层级定位
层级定位的思想是先定位父元素,然后再从父元素中精确定位出其我们需要选取的子元素。
层级定位一般的应用场景是无法直接定位到需要选取的元素,但是其父元素比较容易定位,通过定位父元素再
遍历其子元素选择需要的目标元素,或者需要定位某个元素下所有的子元素。
public static void main(String[] args) { String url = "http://ucenter.51cto.com/reg_01.php"; WebDriver driver = new FirefoxDriver(); driver.navigate().to(url); //通过标签名为form先定位父元素 WebElement el = driver.findElement(By.tagName("form")); //在父元素里定位到子元素 List<WebElement> elements =el.findElements(By.tagName("input")); for ( WebElement e : elements) { System.out.print(e.getAttribute("name")+"\n"); } }}
Selenium->定位页面元素