/******************************************************************************* * Copyright 2014 JHC Systems Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ // Generated source. package jhc.redsniff.webdriver; import static jhc.redsniff.core.DescribedAs.describedAs; import static jhc.redsniff.webdriver.Transformers.toAttribute; import static jhc.redsniff.webdriver.Transformers.toJavascriptLocationLink; import jhc.redsniff.action.ActionableFinder; import jhc.redsniff.core.DescribedAs; import jhc.redsniff.core.Describer; import jhc.redsniff.core.Finder; import jhc.redsniff.core.MFinder; import jhc.redsniff.core.SFinder; import jhc.redsniff.html.tables.Table; import jhc.redsniff.html.tables.TableCell; import jhc.redsniff.html.tables.TableItem; import jhc.redsniff.html.tables.TableRow; import jhc.redsniff.internal.core.CollectionOf; import jhc.redsniff.internal.core.Quantity; import jhc.redsniff.internal.finders.AsActionableFinder; import jhc.redsniff.internal.finders.OnlyFinder; import jhc.redsniff.internal.finders.OrdinalFinder; import jhc.redsniff.internal.finders.TransformingContextSFinder; import jhc.redsniff.webdriver.finders.ByFinder; import jhc.redsniff.webdriver.finders.HtmlTagFinders; import jhc.redsniff.webdriver.finders.TitleFinder; import jhc.redsniff.webdriver.table.ElementOfTableItemFinder; import jhc.redsniff.webdriver.table.TableCellInRowFinder; import jhc.redsniff.webdriver.table.TableFinder; import jhc.redsniff.webdriver.table.TableRowInTableFinder; import org.hamcrest.Matcher; import org.openqa.selenium.By; import org.openqa.selenium.SearchContext; import org.openqa.selenium.WebElement; public final class Finders { private Finders() { } public static MFinder<WebElement, SearchContext> tag(String tagName) { return elementFound(By.tagName(tagName)); } public static MFinder<WebElement, SearchContext> $(String cssSelector) { return describedAs("$(\""+cssSelector +"\")", ByFinder.foundBy(By.cssSelector(cssSelector))); } public static MFinder<WebElement, SearchContext> elementFound(By by) { return ByFinder.foundBy(by); } /** * Creates a finder for finding the nth item found by the wrapped finder. If * less than n elements are found that is included in the diagnostics * * @param n * @param finder * - the finder to get the nth E element from context of type C * @return */ public static <E, C> SFinder<E, C> nth(int n, MFinder<E, C> finder) { return OrdinalFinder.<E, C> nth(n, finder); } /** * Creates a finder for finding the first item found by the wrapped finder. * If no elements are found by the finder then that is included in the * diagnostics * * @param finder * - the finder to get the first element of * @return */ public static <E, C> SFinder<E, C> first(MFinder<E, C> finder) { return OrdinalFinder.<E, C> first(finder); } /** * * * @see #nth(int, MFinder) * @param finder * @return */ public static <E, C> SFinder<E, C> second(MFinder<E, C> finder) { return OrdinalFinder.<E, C> second(finder); } /** * * * @see #nth(int, MFinder) * @param finder * @return */ public static <E, C> SFinder<E, C> third(MFinder<E, C> finder) { return OrdinalFinder.<E, C> third(finder); } /** * * * @see #nth(int, MFinder) * @param finder * @return */ public static <E, C> SFinder<E, C> fourth(MFinder<E, C> finder) { return OrdinalFinder.<E, C> fourth(finder); } /** * * * @see #nth(int, MFinder) * @param finder * @return */ public static <E, C> SFinder<E, C> fifth(MFinder<E, C> finder) { return OrdinalFinder.<E, C> fifth(finder); } /** * * * @see #nth(int, MFinder) * @param finder * @return */ public static <E, C> SFinder<E, C> last(MFinder<E, C> finder) { return OrdinalFinder.<E, C> last(finder); } public static MFinder<Table, SearchContext> table( MFinder<WebElement, SearchContext> tableElementFinder) { return TableFinder.table(tableElementFinder); } public static MFinder<TableCell, TableRow> cell() { return TableCellInRowFinder.cell(); } public static MFinder<TableRow, Table> row() { return TableRowInTableFinder.row(); } public static MFinder<WebElement, SearchContext> tableElement() { return HtmlTagFinders.tableElement(); } public static MFinder<WebElement, SearchContext> dropDown() { return HtmlTagFinders.dropDown(); } public static MFinder<WebElement, SearchContext> tableHeaderElement() { return HtmlTagFinders.tableHeaderElement(); } public static MFinder<WebElement, SearchContext> dropDownOption() { return HtmlTagFinders.dropDownOption(); } public static MFinder<WebElement, SearchContext> dropDownOption(String optionLabel) { return HtmlTagFinders.dropDownOption(optionLabel); } public static MFinder<WebElement, SearchContext> dropDownOption( Matcher<String> optionLabelMatcher) { return HtmlTagFinders.dropDownOption(optionLabelMatcher); } public static MFinder<WebElement, SearchContext> body() { return HtmlTagFinders.body(); } public static MFinder<WebElement, SearchContext> div() { return HtmlTagFinders.div(); } public static MFinder<WebElement, SearchContext> iFrame() { return HtmlTagFinders.iFrame(); } public static MFinder<WebElement, SearchContext> listItem() { return HtmlTagFinders.listItem(); } public static MFinder<WebElement, SearchContext> list() { return HtmlTagFinders.list(); } public static MFinder<WebElement, SearchContext> span() { return HtmlTagFinders.span(); } public static MFinder<WebElement, SearchContext> link(String anchorText) { return HtmlTagFinders.link(anchorText); } public static MFinder<WebElement, SearchContext> link() { return HtmlTagFinders.link(); } public static MFinder<WebElement, SearchContext> textbox() { return HtmlTagFinders.textbox(); } public static MFinder<WebElement, SearchContext> textArea() { return HtmlTagFinders.textarea(); } public static MFinder<WebElement, SearchContext> inputFinderForType( org.hamcrest.Matcher<String> typeMatcher) { return HtmlTagFinders.inputThatHasType(typeMatcher); } public static MFinder<WebElement, SearchContext> inputFinderForType(String type) { return HtmlTagFinders.inputFinderForType(type); } public static MFinder<WebElement, SearchContext> passwordField() { return HtmlTagFinders.passwordField(); } public static MFinder<WebElement, SearchContext> checkbox() { return HtmlTagFinders.checkbox(); } public static MFinder<WebElement, SearchContext> imageButton(String label) { return HtmlTagFinders.imageButton(label); } public static MFinder<WebElement, SearchContext> imageButton() { return HtmlTagFinders.imageButton(); } public static MFinder<WebElement, SearchContext> radioButton(String id) { return HtmlTagFinders.radioButton(id); } public static MFinder<WebElement, SearchContext> radioButton() { return HtmlTagFinders.radioButton(); } public static MFinder<WebElement, SearchContext> submitButton() { return HtmlTagFinders.submitButton(); } public static MFinder<WebElement, SearchContext> submitButton(String label) { return HtmlTagFinders.submitButton(label); } /** * Note this finds a *String* not a WebElement, since there is no way to get * a valid <title> WebElement except in HtmlUnit */ public static MFinder<String, SearchContext> title() { return TitleFinder.title(); } /** * Note this finds a *String* not a WebElement, since there is no way to get * a valid <title> WebElement except in HtmlUnit */ public static MFinder<String, SearchContext> title(String title) { return TitleFinder.title(title); } public static MFinder<WebElement, SearchContext> button(String label) { return HtmlTagFinders.button(label); } public static MFinder<WebElement, SearchContext> button() { return HtmlTagFinders.button(); } public static MFinder<WebElement, SearchContext> image() { return HtmlTagFinders.image(); } public static MFinder<WebElement, SearchContext> form() { return HtmlTagFinders.form(); } public static MFinder<WebElement, SearchContext> textElement() { return HtmlTagFinders.textElement(); } public static <E, Q extends Quantity<E>, C> SFinder<E, C> only(Finder<E, Q, C> finder) { return OnlyFinder.only(finder); } public static <E, C> ActionableFinder<E, CollectionOf<E>, C> each( MFinder<E, C> finder) { return AsActionableFinder.each(finder); } public static <T extends TableItem, C> MFinder<WebElement, C> elementOf( MFinder<T, C> tableItemFinder) { return ElementOfTableItemFinder.elementOf(tableItemFinder); } public static SFinder<String, WebElement> attribute(String attribute){ return new TransformingContextSFinder<String, WebElement>(toAttribute(attribute)); } public static SFinder<String, WebElement> javascriptRedirectOnAttribute(String attribute){ return new TransformingContextSFinder<String, WebElement>(toJavascriptLocationLink(attribute)); } public static SFinder<String, SearchContext> downloadLinkFromAttribute(MFinder<WebElement, SearchContext> elementFinder, String attribute){ return attribute(attribute).within(only(elementFinder)); } public static SFinder<String, SearchContext> downloadLinkFromJavascriptOnClick(MFinder<WebElement, SearchContext> elementFinder){ return javascriptRedirectOnAttribute("onclick").within(only(elementFinder)); } }