Crate thirtyfour_sync[−][src]
Expand description
Thirtyfour is a Selenium / WebDriver library for Rust, for automated website UI testing.
It supports the full W3C WebDriver spec. Tested with Chrome and Firefox although any W3C-compatible WebDriver should work.
This crate provides a synchronous (i.e. not async) interface for thirtyfour
.
For async, see the thirtyfour crate instead.
Features
- All W3C WebDriver and WebElement methods supported
- Create new browser session directly via WebDriver (e.g. chromedriver)
- Create new browser session via Selenium Standalone or Grid
- Automatically close browser session on drop
- Find elements (via all common selectors e.g. Id, Class, CSS, Tag, XPath)
- Send keys to elements, including key-combinations
- Execute Javascript
- Action Chains
- Get and set cookies
- Switch to frame/window/element/alert
- Shadow DOM support
- Alert support
- Capture / Save screenshot of browser or individual element as PNG
- Chrome DevTools Protocol support
Cargo features
There are four reqwest-*-tls*
-features, which enable the respective features in the reqwest
dependency:
- reqwest-default-tls (enabled by default): Provides TLS support to connect over HTTPS.
- reqwest-native-tls: Enables TLS functionality provided by
native-tls
. - reqwest-native-tls-vendored: Enables the
vendored
feature ofnative-tls
. - reqwest-rustls-tls: Enables TLS functionality provided by
rustls
.
Examples
The following example assumes you have a selenium server running at localhost:4444, and a demo web app running at http://webappdemo
You can set these up using docker-compose, as follows:
docker-compose up -d
The included web app demo is purely for demonstration / unit testing purposes and is not required in order to use this library in other projects.
Example (synchronous):
use thirtyfour_sync::prelude::*;
fn main() -> WebDriverResult<()> {
let caps = DesiredCapabilities::chrome();
let driver = WebDriver::new("http://localhost:4444/wd/hub", &caps)?;
// Navigate to URL.
driver.get("http://webappdemo")?;
// Navigate to page.
driver.find_element(By::Id("pagetextinput"))?.click()?;
// Find element.
let elem_div = driver.find_element(By::Css("div[data-section='section-input']"))?;
// Find element from element.
let elem_text = elem_div.find_element(By::Name("input1"))?;
// Type in the search terms.
elem_text.send_keys("selenium")?;
// Click the button.
let elem_button = elem_div.find_element(By::Tag("button"))?;
elem_button.click()?;
// Get text value of element.
let elem_result = driver.find_element(By::Id("input-result"))?;
assert_eq!(elem_result.text()?, "selenium");
// Close the browser.
driver.quit()?;
Ok(())
}
Advanced element queries and explicit waits
You can use WebDriver::query()
and WebElement::query()
to perform more advanced queries
including polling and filtering. Custom filter functions are also supported.
Also the WebElement::wait_until()
method provides additional support for explicit waits
using a variety of built-in predicates. You can also provide your own custom predicate if
desired.
See the query module documentation for more details.
Modules
Re-export common types.
Wrappers for specific component types.
Error types.
Extensions for specific browsers.
Advanced query interface featuring powerful filtering and polling options.
Structs
Struct for managing alerts.
Re-export common types.
Re-export common types.
The DesiredCapabilities struct provides a generic way to construct capabilities as well as helper methods that create specific capabilities structs for the various browsers.
Re-export common types.
Re-export common types.
NOTE: For WebDriver method documentation, see the WebDriverCommands trait.
Re-export common types.
Re-export common types.
Re-export common types.
Re-export common types.
Struct for switching between frames/windows/alerts.
Re-export common types.
The WebElement struct encapsulates a single element on a page.
Enums
Re-export common types.
Re-export common types.
Traits
Re-export common types.
All browser-level W3C WebDriver commands are implemented under this trait.
Functions
Type Definitions
The WebDriver struct represents a browser session.