在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 ;元素名称>)) | 使用Name属性定位元素 |
按类名 | driver.findElement(By.className(< element class>)) | 找到一个元素使用Class属性 |
按标签名称 | driver.findElement(By.tagName(< htmltagname>)) | 使用HTML标记找到元素 |
按链接文字 | driver.findElement(By.linkText(< linktext>)) | 使用链接文字找到链接 |
部分链接文字 | driver.findElement(By.partialLinkText(< linktext>)) | 使用链接的部分文本找到链接 |
按CSS | driver.findElement(By.cssSelector(< css选择器>)) | 使用CSS选择器定位元素 |
按XPath | driver.findElement(By.xpath(< xpath>)) | 找到一个元素使用XPath查询 |
定位器用法
现在让我们在 https://www.calculator.net
按ID
这里有一个借助ID访问的对象.在这种情况下,它是文本框的ID.使用sendkeys方法在ID(cdensity)的帮助下将值输入到文本框中.
driver.findElement(By.id("cdensity")).sendKeys("10");
按名称
这里使用名称帮助访问对象.在这种情况下,它是文本框的名称.使用sendkeys方法在ID(cdensity)的帮助下将值输入到文本框中.
driver.findElement(By.name("cdensity")).sendKeys("10");
按类名
此处借助类名访问对象.在这种情况下,它是WebElement的类名.可以使用gettext方法访问Value.
Listbyclass = driver.findElements(By.className("smalltext smtb"));
按标记名称
元素的DOM标记名称可用于在WebDriver中查找该特定元素.借助这种方法处理表格非常容易.看看下面的代码.
WebElement table = driver.findElement(By.id("calctable"));Listrow = table.findElements(By.tagName("tr"));int rowcount = row.size();
按链接文字
此方法有助于找到具有匹配可见文本的链接元素.
driver.findElements(By.linkText("Volume")).click();
通过部分链接文本
此方法有助于找到部分匹配可见文本的链接元素.
driver.findElement(By.partialLinkText("Volume")).click();
按CSS
CSS用作识别web对象的方法,但并非所有浏览器都支持CSS识别.
WebElement loginButton = driver.findElement(By.cssSelector("input.login"));
按XPath
XPath代表XML路径语言.它是一种用于从XML文档中选择节点的查询语言. XPath基于XML文档的树表示,并提供了通过使用各种标准选择节点来浏览树的能力.
driver.findElement(By.xpath(".//*[@id = 'content']/table[1]/tbody/tr/td/table/tbody/tr[2]/td[1]/input")).sendkeys("100");