mirror of
https://github.com/teamcapybara/capybara.git
synced 2022-11-09 12:08:07 -05:00
Describe new :exact and :match options in README
This commit is contained in:
parent
b0280624f9
commit
d0008e87e6
1 changed files with 43 additions and 0 deletions
43
README.md
43
README.md
|
@ -528,6 +528,49 @@ Finally, in drivers that support it, you can save a screenshot:
|
|||
page.save_screenshot('screenshot.png')
|
||||
```
|
||||
|
||||
## Matching
|
||||
|
||||
It is possible to customize how Capybara finds elements. At your disposal
|
||||
are two options, `Capybara.exact` and `Capybara.match`.
|
||||
|
||||
### Exactness
|
||||
|
||||
`Capybara.exact` and the `exact` option work together with the `is` expression
|
||||
inside the XPath gem. When `exact` is true, all `is` expressions match exactly,
|
||||
when it is false, they allow substring matches. Many of the seletors built into
|
||||
Capybara use the `is` expression. This way you can specify whether you want to
|
||||
allow substring matches or not. `Capybara.exact` is false by default.
|
||||
|
||||
For example:
|
||||
|
||||
```ruby
|
||||
click_link("Password") # also matches "Password confirmation"
|
||||
Capybara.exact = true
|
||||
click_link("Password") # does not match "Password confirmation"
|
||||
click_link("Password", exact: false) # can be overridden
|
||||
```
|
||||
|
||||
### Strategy
|
||||
|
||||
Using `Capybara.match` and the equivalent `match` option, you can control how
|
||||
Capybara behaves when multiple elements all match a query. There are currently
|
||||
four different strategies built into Capybara:
|
||||
|
||||
1. **first:** Just picks the first element that matches.
|
||||
2. **one:** Raises an error if more than one element matches.
|
||||
3. **smart:** If `exact` is `true`, raises an error if more than one element
|
||||
matches, just like `one`. If `exact` is `false`, it will first try to find
|
||||
an exact match. An error is raised if more than one element is found. If no
|
||||
element is found, a new search is performed which allows partial matches. If
|
||||
that search returns multiple matches, an error is raised.
|
||||
4. **prefer_exact:** If multiple matches are found, some of which are exact,
|
||||
and some of which are not, then the first eaxctly matching element is
|
||||
returned.
|
||||
|
||||
The default for `Capybara.match` is `:smart`. To emulate the behaviour in
|
||||
Capybara 2.0.x, set `Capybara.match` to `:one`. To emulate the behaviour in
|
||||
Capybara 1.x, set `Capybara.match` to `:prefer_exact`.
|
||||
|
||||
## Transactions and database setup
|
||||
|
||||
Some Capybara drivers need to run against an actual HTTP server. Capybara takes
|
||||
|
|
Loading…
Reference in a new issue