WebDriver定位網(wǎng)頁元素可以通過“Find Element”和“Find Elements”來完成。“Find Element” 會返回與查詢匹配的WebElement對象玄柠,如果找不到径筏,會拋出異常萍虽。“Find Elements”會返回WebElements的列表调卑,如果沒有DOM元素與查找匹配,則可能為空大咱。
“Find”方法恬涧,通過“By”來查找或者定位對象。以下是定位方法:
- By id
通過id來定位是最有效的方法碴巾。不過在某些情況下气破,id并不是唯一的,有可能是自動生成的餐抢,這種情況下就不應(yīng)使用现使。
例:
< 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 >cheese</a>>
java:
WebElement element = driver.findElement(By.linkText("cheese"));
6.By Partial Link Text
通過部分鏈接文本匹配也可以定位元素。
例:
<a >search for cheese</a>>
java:
WebElement cheese = driver.findElement(By.partialLinkText("cheese"));
7.By css
可以使用css來定位元素贸人,可以去w3c css selectors 網(wǎng)站去查看可以使用的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("http://input"));
關(guān)于css selector和XPath之后會單獨寫艺智,關(guān)于元素定位倘要,詳情請參考:
http://docs.seleniumhq.org/docs/03_webdriver.jsp
https://www.w3.org/TR/css3-selectors/