= TabDriver

:stylesheet: ../shared/adoc-styles.css
:toc:
:toclevels: 4


* Wrapper for `selenium` to make it easier to use.
* Must use `Chrome` (not `Chromium`).
* Must supply `.properties` file with.


    chrome.driver.path=
    headless=false
    download.dir=

== Usage

=== Init

[source,java]
var confPath = Path.of("/foo/tabdriver.properties");
var td = TabDriverBuilder.build(confPath);

=== Web Navigation

* `TabDriver` is somewhat opionionated.
* The default way of fetching an element is by `css` selector.
** i.e. `td.findByCss("input[name='q']")`
** this returns an `Optional<WebElement>` which the consumer can
** the optional is empty on any error.
decide how to consume.

=== Quick Recap of CSS Selectors

|===
| Selector | Description
| `[class*='x']` , `[aria-label*='x']` | `attribute` containing `x`
| button[class*='email'] | button with a class containing the word `email`
| form[action*='sign'] | form with an action attribute containing the word `sign`
| button.tv-button#email-signin | button with class `tv-button` and id `email-signin`
