WebDriver定位网页元素可以通过“Find Element”和“Find Elements”来完成。“Find Element” 会返回与查询匹配的WebElement对象,如果找不到,会抛出异常。“Find Elements”会返回WebElements的列表,如果没有DOM元素与查找匹配,则可能为空。
“Find”方法,通过“By”来查找或者定位对象。以下是定位方法:
- By id
通过id来定位是最有效的方法。不过在某些情况下,id并不是唯一的,有可能是自动生成的,这种情况下就不应使用。
例:
< input id ="kw" />
java:
WebElement element = driver.findElement(By.id("kw"));
- By class name
class 是DOM元素的一个属性。可以定位一个元素,也可以同时定位多个元素。
例:
<a class="mnav" href =" http://news.baidu.com/">新闻</a>
<a class="mnav" href =" http://map.baidu.com/">地图</a>
java:
List<WebElement> list = driver.findElements(By.className("mnav"));
- By tag name
通过页面元素的tag来定位元素。
例:
<iframe id = "box_taobao1" width="238"></iframe>
java:
WebElement element = driver.findElement(By.tagName("iframe"));
- By name
直接使用name来定位。
例:
<input name="cheese" type="text'/>
java:
WebElement element = driver.findElement(By.name("cheese"));
5.By Link Text
也可以通过链接的文本来定位元素。
<a href="http://www.google.com/search?q=cheese">cheese</a>>
java:
WebElement element = driver.findElement(By.linkText("cheese"));
6.By Partial Link Text
通过部分链接文本匹配也可以定位元素。
例:
<a href="http://www.google.com/search?q=cheese">search for cheese</a>>
java:
WebElement cheese = driver.findElement(By.partialLinkText("cheese"));
7.By css
可以使用css来定位元素,可以去w3c css selectors 网站去查看可以使用的css selectors的列表。下面给出一个例子:
<div id="food"><span class="dairy">milk</span><span class="dairy aged">cheese</span></div>
java:
WebElement cheese = driver.findElement(By.cssSelector("#food span.dairy.aged"));
8.By XPath
XPath是XML Path的简称。
<input type="text" name="example" />
<INPUT type="text" name="other" />
java:
List<WebElement> inputs = driver.findElements(By.xpath("//input"));
关于css selector和XPath之后会单独写,关于元素定位,详情请参考:
http://docs.seleniumhq.org/docs/03_webdriver.jsp
https://www.w3.org/TR/css3-selectors/