八种定位元素的方法
定位方法 | 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("新"))