/**
* Provides the main classes to control browsers and to find and interact with elements on the current web page.
* <p>
* <strong>Example Application:</strong>
* <pre>{@code
* Browser browser = new Browser("http://example.com"); // open browser with specified URL
* browser.click("Contact"); // click on a link labeled "Contact" (case-sensitive)
* browser.type("Name", "John"); // enter text into the textfield labeled "Name"
* browser.type("Message", "This is an example").submit(); // enter text into the textarea labeled "Message"
* HtmlElement successMessage = browser.query(headline(), has("Success")).findFirst();
* assertEquals(successMessage instanceof HtmlElement, true); // make sure that submit was successful
* }</pre>
* <p>
* <strong>Abmash</strong> ("Automated Browser for Mashups") is a framework which allows the developer to
* directly interact with web applications as humans would do. The {@link com.abmash.api.Browser#click(String)} method
* simulates a click on any element. Further, it is possible to simulate keyboard interaction
* to enter text in an input field, or extracting content from specific page elements. The main classes of
* com.abmash.are <code>Browser</code>, <code>HtmlElement</code>, <code>HtmlElements</code> and <code>HtmlQuery</code>.
* <p>
* {@link com.abmash.api.Browser} is used to start a new browser session. Its main purpose is to find {@link com.abmash.api.HtmlElements}
* by using the {@link com.abmash.api.query.Query} methods, and interacting with them by using methods like
* {@link com.abmash.api.Browser#click(String)} or {@link com.abmash.api.Browser#type(String, String)}.
* <p>
* <ul>
* <li>{@link com.abmash.api.HtmlElement} represents an HTML element on the current page.</li>
* <li>{@link com.abmash.api.HtmlElements} is a list of <code>HtmlElement</code> objects.</li>
* <li>{@link com.abmash.api.query.Query} is used to find HTML elements on the current page.</li>
* </ul>
* <p>
* An {@link com.abmash.api.HtmlElement} object is a representation of an HTML element on the current web page. It
* can be used to interact with them, to parameterize other browser interaction tasks or to get the contents of that element.
* {@link com.abmash.api.query.Query#findFirst()} returns an <code>HtmlElement</code>.
* <p>
* {@link com.abmash.api.HtmlElements} is a list of <code>HtmlElement</code> objects. It
* can be used to interact with them, to parameterize other browser interaction tasks or to get the contents of that elements
* {@link com.abmash.api.query.Query#find()} returns an <code>HtmlElements</code> object.
* <p>
* A {@link com.abmash.api.query.Query} contains of an arbitrary number of search conditions to find {@link com.abmash.api.HtmlElements}.
*
* @see com.abmash.api.Browser
* @see com.abmash.api.HtmlElement
* @see com.abmash.api.HtmlElements
* @see com.abmash.api.query.Query
* @see com.abmash.api.query.QueryFactory
*/
package com.abmash.api;