八種定位元素的方法
定位方法 | selenium對應方法 | 說明 |
---|---|---|
id | findElement(By.id()) | 元素的id |
name | findElement(By.name()) | 元素的名稱 |
class name | findElement(By.className()) | 元素的類名 |
tag name | findElement(By.tagName()) | 元素的標籤,重複率太高,不推薦 |
link text | findElement(By.linkText()) | 元素鏈接的文本 |
partial link text | findElement(By.partialLinkText()) | 元素鏈接的文本中一部分 |
xpath | findElement(By.xpath()) | 相對/絕對路徑 |
css selector | findElement(By.cssSelector()) | css定位 |
具體用法
一. 定位input標籤的輸入框
<html>
<head>
<body link="#0000cc">
<a id="result_logo" href="/" onmousedown="return c({'fm':'tab','tab':'logo'})">
<form id="form" class="fm" name="f" action="/s">
<span class="soutu-btn"></span>
<input id="kw" class="s_ipt" name="wd" value="" maxlength="255" autocomplete="off">
- 利用id定位
driver.findElement(By.id("kw"));
- 利用name定位
driver.findElement(By.name("wd"));
- 利用class name定位
driver.findElement(By.className("s_ipt"));
- 利用tag name定位(注意,這種方法不推薦,因爲input標籤可能有很多個)
driver.findElement(By.tagName("input"));
- 利用css定位(css定位寫法有多種)
// 根據id來定位,可在前面加#符號
driver.findElement(By.cssSelector("#kw"));
//根據name來定位
driver.findElement(By.cssSelector("[name=wd]"));
//根據class name來定位,可在前面加.符號
driver.findElement(By.cssSelector(".s_ipt"));
//根據絕對路徑來定位,可在前面加.符號
driver.findElement(By.cssSelector("html > body > form > span >input"));
//前面幾種形式相結合
driver.findElement(By.cssSelector("span.soutu-btn >input#kw"));
driver.findElement(By.cssSelector("form#form > span >input"));
二. 定位文本鏈接
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新聞</a>
- 利用link text定位
driver.findElement(By.linkText("新聞"))
- 利用partial link text定位
driver.findElement(By.partialLinkText("新"))