Selenium - 定位器

在Selenium WebDriver中定位元素是在WebDriver和WebElement类提供的findElement()和findElements()方法的帮助下执行的.

  • findElement()根据指定的搜索条件返回WebElement对象,如果找不到与搜索条件匹配的元素,则最终抛出异常.

  • findElements()返回与搜索条件匹配的Web元素列表.如果没有找到任何元素,则返回一个空列表.

下表列出了在Selenium WebDriver中定位元素的所有Java语法.

Method语法描述
按ID驱动程序.findElement(By.id(< element ID>))使用ID属性定位元素
按名称driver.findElement(By.name(&lt lt ;元素名称>))使用Name属性定位元素
按类名driver.findElement(By.className(< element class>))找到一个元素使用Class属性
按标签名称driver.findElement(By.tagName(< htmltagname>))使用HTML标记找到元素
按链接文字driver.findElement(By.linkText(< linktext>))使用链接文字找到链接
部分链接文字driver.findElement(By.partialLinkText(< linktext>))使用链接的部分文本找到链接
按CSSdriver.findElement(By.cssSelector(< css选择器>))使用CSS选择器定位元素
按XPathdriver.findElement(By.xpath(< xpath>))找到一个元素使用XPath查询

定位器用法

现在让我们在 https://www.calculator.net

按ID

这里有一个借助ID访问的对象.在这种情况下,它是文本框的ID.使用sendkeys方法在ID(cdensity)的帮助下将值输入到文本框中.

Selenium IDE 84


driver.findElement(By.id("cdensity")).sendKeys("10");


按名称

这里使用名称帮助访问对象.在这种情况下,它是文本框的名称.使用sendkeys方法在ID(cdensity)的帮助下将值输入到文本框中.

Selenium IDE 85


driver.findElement(By.name("cdensity")).sendKeys("10");


按类名

此处借助类名访问对象.在这种情况下,它是WebElement的类名.可以使用gettext方法访问Value.

Selenium IDE 86


List<WebElement> byclass = driver.findElements(By.className("smalltext smtb"));


按标记名称

元素的DOM标记名称可用于在WebDriver中查找该特定元素.借助这种方法处理表格非常容易.看看下面的代码.

WebElement table = driver.findElement(By.id("calctable"));
List<WebElement> row = table.findElements(By.tagName("tr"));
int rowcount = row.size();


按链接文字

此方法有助于找到具有匹配可见文本的链接元素.

Selenium IDE 87


driver.findElements(By.linkText("Volume")).click();


通过部分链接文本

此方法有助于找到部分匹配可见文本的链接元素.

Selenium IDE 87


driver.findElement(By.partialLinkText("Volume")).click();


按CSS

CSS用作识别web对象的方法,但并非所有浏览器都支持CSS识别.

WebElement loginButton = driver.findElement(By.cssSelector("input.login"));


按XPath

XPath代表XML路径语言.它是一种用于从XML文档中选择节点的查询语言. XPath基于XML文档的树表示,并提供了通过使用各种标准选择节点来浏览树的能力.

Selenium IDE 88


driver.findElement(By.xpath(".//*[@id = 'content']/table[1]/tbody/tr/td/table/tbody/tr[2]/td[1]/input")).sendkeys("100");