Skip to content

Selenium - Selenese 命令

在 Selenium WebDriver 中,与网页的交互通过发送到浏览器驱动程序(browser driver)的命令来执行。这些命令模拟用户操作(user actions)。理解这些核心命令和概念对于有效的测试自动化(test automation)至关重要。

这些是用于与 Web 元素(web elements)交互的最常用方法(methods):

  • findElement(By locator): 使用给定的定位策略(locator strategy)查找第一个匹配的 Web 元素。如果找不到,则抛出 NoSuchElementException 异常。
  • findElements(By locator): 使用定位策略查找所有匹配的 Web 元素。如果找不到,则返回空列表。
  • element.click(): 模拟对 Web 元素(按钮、链接、单选按钮等)进行点击。
  • element.sendKeys(CharSequence... keysToSend): 模拟在输入字段或文本区域中输入文本。
  • element.clear(): 清除输入字段或文本区域中的文本。
  • element.getText(): 获取元素的可见内部文本。
  • element.getAttribute(String attributeName): 获取指定元素属性(例如 ‘href’、‘value’、‘class’)的值。
  • element.isSelected(): 检查复选框或单选按钮是否被选中。返回 true 或 false。
  • element.isEnabled(): 检查元素(如按钮或输入字段)是否启用。返回 true 或 false。
  • element.isDisplayed(): 检查元素在页面上是否可见。返回 true 或 false。
  • driver.get(String url): 导航浏览器到指定的 URL。
  • driver.navigate().to(String url): 导航到 URL 的另一种方式。
  • driver.navigate().back(): 模拟点击浏览器的后退按钮。
  • driver.navigate().forward(): 模拟点击浏览器的前进按钮。
  • driver.navigate().refresh(): 重新加载当前页面。
  • driver.getTitle(): 获取当前页面的标题。
  • driver.getCurrentUrl(): 获取当前页面的 URL。

虽然 Selenium 本身执行操作,但验证结果(即断言,Assertions)通常由 TestNG 或 JUnit 等测试框架(testing framework)处理。这些框架提供方法来检查实际结果是否与预期结果匹配。

常见断言示例(使用 TestNG 语法):

import org.testng.Assert;
// Verify page title
String actualTitle = driver.getTitle();
String expectedTitle = "Expected Page Title";
Assert.assertEquals(actualTitle, expectedTitle, "Page title mismatch");
// Verify element text
WebElement messageElement = driver.findElement(By.id("successMessage"));
String actualMessage = messageElement.getText();
Assert.assertTrue(actualMessage.contains("Successfully updated"), "Success message not found");
// Verify element is displayed
WebElement submitButton = driver.findElement(By.id("submitBtn"));
Assert.assertTrue(submitButton.isDisplayed(), "Submit button should be visible");

定位器(Locators)是 Selenium 用于在页面上查找 HTML 元素的策略。选择有效且稳定的定位器对于可靠的测试至关重要。现代浏览器内置了开发者工具(通常按 F12 打开),允许你检查元素并确定合适的定位器。旧教程中提到的 Firebug 和 FirePath 等工具已被弃用,并被这些内置的浏览器工具所取代。

  • By.id("elementId"): 根据其唯一的 ‘id’ 属性定位元素。通常是最快、最可靠的方式。
  • By.name("elementName"): 根据其 ‘name’ 属性定位元素。
  • By.className("elementClassName"): 根据其 ‘class’ 属性定位元素。如果多个元素共享同一个 class,请谨慎使用。
  • By.tagName("htmlTagName"): 根据其 HTML 标签名(例如 ‘a’, ‘input’, ‘div’)定位元素。
  • By.linkText("exactLinkText"): 根据其准确的可见文本定位锚点元素 (<a>)。
  • By.partialLinkText("partialLinkText"): 根据其可见文本的部分匹配来定位锚点元素 (<a>)。
  • By.cssSelector("cssSelectorSyntax"): 使用 CSS Selector 模式定位元素。功能强大且通常更受欢迎。
  • By.xpath("xpathExpression"): 使用 XPath 表达式定位元素。功能非常强大,但如果编写不当,可能会更慢且更脆弱。

请参阅 ‘Selenium - Locators’ 章节,了解每种策略的详细示例和最佳实践。