Principle:SeleniumHQ Selenium Browser Interaction
| Knowledge Sources | |
|---|---|
| Domains | Browser_Automation, WebDriver, DOM_Interaction |
| Last Updated | 2026-02-11 00:00 GMT |
Overview
Set of protocol-defined operations for navigating to URLs, finding elements in the DOM, and performing user-like interactions through the W3C WebDriver interface.
Description
Browser Interaction encompasses the core WebDriver operations that automate user behavior: navigating to pages, locating elements using various strategies (ID, CSS selector, XPath, etc.), clicking elements, typing text, reading element state, and managing windows/frames. These operations are defined by the W3C WebDriver specification and are implemented as HTTP commands sent to the driver server. The WebDriver interface provides navigation, the By class provides element location strategies, and the WebElement interface provides element interaction methods.
Usage
Apply this principle for all test automation interactions with web pages after a session has been created. The key design decision is choosing the right locator strategy: CSS selectors are generally preferred for performance, while XPath is more flexible for complex queries.
Theoretical Basis
The W3C WebDriver specification defines these interaction categories:
# Navigation Commands
POST /session/{id}/url -> driver.get(url)
GET /session/{id}/url -> driver.getCurrentUrl()
GET /session/{id}/title -> driver.getTitle()
POST /session/{id}/back -> driver.navigate().back()
POST /session/{id}/forward -> driver.navigate().forward()
POST /session/{id}/refresh -> driver.navigate().refresh()
# Element Location
POST /session/{id}/element -> driver.findElement(By)
POST /session/{id}/elements -> driver.findElements(By)
# Locator strategies: css selector, xpath, id, name, tag name, link text, partial link text
# Element Interaction
POST /session/{id}/element/{eid}/click -> element.click()
POST /session/{id}/element/{eid}/clear -> element.clear()
POST /session/{id}/element/{eid}/value -> element.sendKeys()
GET /session/{id}/element/{eid}/text -> element.getText()
GET /session/{id}/element/{eid}/attribute -> element.getAttribute()