📅  最后修改于: 2020-12-04 04:52:01             🧑  作者: Mango
使用WebDriver和WebElement类提供的findElement()和findElements()方法来执行Selenium WebDriver中的元素定位。
findElement()根据指定的搜索条件返回一个WebElement对象,如果找不到与搜索条件匹配的任何元素,则抛出异常。
findElements()返回符合搜索条件的WebElement列表。如果未找到任何元素,则返回一个空列表。
下表列出了用于在Selenium WebDriver中定位元素的所有Java语法。
Method | Syntax | Description |
---|---|---|
By ID | driver.findElement(By.id ( |
Locates an element using the ID attribute |
By name | driver.findElement(By.name ( |
Locates an element using the Name attribute |
By class name | driver.findElement(By.className ( |
Locates an element using the Class attribute |
By tag name | driver.findElement(By.tagName ( |
Locates an element using the HTML tag |
By link text | driver.findElement(By.linkText ( |
Locates a link using link text |
By partial link text | driver.findElement(By.partialLinkText ( |
Locates a link using the link’s partial text |
By CSS | driver.findElement(By.cssSelector ( |
Locates an element using the CSS selector |
By XPath | driver.findElement(By.xpath ( |
Locates an element using XPath query |
现在让我们借助https://www.calculator.net了解每种定位器方法的实际用法
在此,借助ID访问对象。在这种情况下,它是文本框的ID。借助ID(cdensity)使用sendkeys方法将值输入到文本框中。
driver.findElement(By.id("cdensity")).sendKeys("10");
此处,借助名称访问对象。在这种情况下,它是文本框的名称。借助ID(cdensity)使用sendkeys方法将值输入到文本框中。
driver.findElement(By.name("cdensity")).sendKeys("10");
在这里,借助类名访问对象。在这种情况下,它是WebElement的类名称。可以使用gettext方法访问该值。
List byclass = driver.findElements(By.className("smalltext smtb"));
元素的DOM标记名称可用于在WebDriver中定位该特定元素。使用此方法很容易处理表格。看一下下面的代码。
WebElement table = driver.findElement(By.id("calctable"));
List row = table.findElements(By.tagName("tr"));
int rowcount = row.size();
此方法有助于找到具有匹配可见文本的链接元素。
driver.findElements(By.linkText("Volume")).click();
此方法有助于找到具有部分匹配的可见文本的链接元素。
driver.findElement(By.partialLinkText("Volume")).click();
CSS被用作识别Web对象的方法,但是并非所有浏览器都支持CSS识别。
WebElement loginButton = driver.findElement(By.cssSelector("input.login"));
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");