从下图中可以看到selenium有三类定位元素的方法,一种是直接通过属性、标签以及链接来定位,一种是XPath方式,最后一种是CSS方式。
下表列举了元素定位的例子
| 方法 | 例子 |
| 通过ID来定位 | WebElement wElement = driver.findElement(By.id("kw")) |
| 通过Name来定位 | WebElement wElement = driver.findElement(By.name("wd")) |
| 通过Class定位 | WebElement wElement = driver.findElement(By.className("s_ipt")) |
| 通过Tag来定位 | List<WebElement> inputs = driver.findElements(By.tagName("input")) |
| 通过Link来定位 | WebElement wElement = driver.findElement(By.linkText("新闻")) |
| 通过PartialLink来定位 | WebElement wElement = driver.findElement(By.partialLinkText("使用百度")) |
XPath定位 | 1.绝对路径 | WebElement wElement = driver.findElement(By.xpath("/html/body/div/div/div/div/div/form/span/input")) |
| 2.相对路径 | WebElement wElement = driver.findElement(By.xpath("//form/span/input")) |
| 3.利用元素属性定位 | WebElement wElement = driver.findElement(By.xpath("//input[@id='kw']")) |
| 4.层级与属性结合 | WebElement wElement = driver.findElement(By.xpath("//span[@class='bg s_ipt_wr iptfocus quickdelete-wrap']/input")) |
| 5.使用逻辑运算符 | WebElement wElement = driver.findElement(By.xpath("//input[@class='s_ipt' and @id='kw']")) |
CSS定位 | 1.通过class属性定位 | WebElement wElement = driver.findElement(By.cssSelector(".s_ipt")) |
| 2.通过id属性定位 | WebElement wElement = driver.findElement(By.cssSelector("#kw")) |
| 3.通过标签名定位 | List<WebElement> inputs = driver.findElements(By.cssSelector("input")) |
| 4.通过父子关系定位 | List<WebElement> inputs = driver.findElements(By.cssSelector("span>input")) |
| 5.通过属性定位 | WebElement wElement = driver.findElement(By.cssSelector("[id=kw]")) |
| 6.通配符 | WebElement wElement = driver.findElement(By.cssSelector("[class$=_ipt]")) |
| 7.组合定位 | WebElement wElement = driver.findElement(By.cssSelector("form.fm>span>input.s_ipt")) |