Java 类org.openqa.selenium.SearchContext 实例源码

项目:Cognizant-Intelligent-Test-Scripter    文件:AngularFindBy.java   
@SProperty(name = "ng-repeat-row")
public By getByRepeaterRow(String repeaterRow) {
    String repeater = repeaterRow.split("###")[0];
    int row = Integer.valueOf(repeaterRow.split("###")[1]);
    return new ByAngularRepeaterRow(NgWebDriver.DEFAULT_ROOT_SELECTOR, repeater, false, row) {
        @Override
        public List<WebElement> findElements(SearchContext searchContext) {
            List<WebElement> elements = new ArrayList<>();
            try {
                elements.add(this.findElement(searchContext));
            } catch (Exception ex) {

            }
            return elements;
        }
    };
}
项目:Selenium-Foundation    文件:PageComponent.java   
/**
 * Returns a 'wait' proxy that determines if this page component is visible
 * 
 * @return page component if visible; otherwise 'null'
 */
public static Coordinator<PageComponent> componentIsVisible() {
    return new Coordinator<PageComponent>() {

        @Override
        public PageComponent apply(SearchContext context) {
            PageComponent component = verifyContext(context);
            return (component.isDisplayed()) ? component : null;
        }

        @Override
        public String toString() {
            return "page component to be visible";
        }
    };
}
项目:Selenium-Foundation    文件:PageComponent.java   
/**
 * Returns a 'wait' proxy that determines if this page component is hidden
 * 
 * @return page component if hidden; otherwise 'null'
 */
public static Coordinator<PageComponent> componentIsHidden() {
    return new Coordinator<PageComponent>() {

        @Override
        public PageComponent apply(SearchContext context) {
            PageComponent component = verifyContext(context);
            return (component.isInvisible()) ? component : null;
        }

        @Override
        public String toString() {
            return "page component to be absent or hidden";
        }
    };
}
项目:Selenium-Foundation    文件:RobustElementFactory.java   
/**
 * Returns a 'wait' proxy that refreshes the wrapped reference of the specified robust element.
 * 
 * @param wrapper robust element wrapper
 * @return wrapped element reference (refreshed)
 */
private static Coordinator<RobustElementWrapper> referenceIsRefreshed(final RobustElementWrapper wrapper) {
    return new Coordinator<RobustElementWrapper>() {

        @Override
        public RobustElementWrapper apply(SearchContext context) {
            try {
                return acquireReference(wrapper);
            } catch (StaleElementReferenceException e) {
                ((WrapsContext) context).refreshContext(((WrapsContext) context).acquiredAt());
                return acquireReference(wrapper);
            }
        }

        @Override
        public String toString() {
            return "element reference to be refreshed";
        }
    };

}
项目:Selenium-Foundation    文件:ComponentContainer.java   
/**
 * Returns a 'wait' proxy that switches focus to the specified context
 * 
 * @param context search context on which to focus
 * @return target search context
 */
static Coordinator<SearchContext> contextIsSwitched(final ComponentContainer context) {
    return new Coordinator<SearchContext>() {

        @Override
        public SearchContext apply(SearchContext ignore) {
            if (context.parent != null) {
                context.parent.switchTo();
            }

            try {
                return context.switchToContext();
            } catch (StaleElementReferenceException e) {
                return context.refreshContext(context.acquiredAt());
            }
        }

        @Override
        public String toString() {
            return "context to be switched";
        }
    };
}
项目:Selenium-Foundation    文件:ComponentContainer.java   
/**
 * Returns a 'wait' proxy that determines if the expected landing page has appeared.
 * 
 * @return 'true' if the expected landing page has appeared
 */
private static Coordinator<Boolean> landingPageAppears() {
    return new Coordinator<Boolean>() {

        @Override
        public Boolean apply(SearchContext context) {
            verifyLandingPage((Page) context);
            return Boolean.TRUE;
        }

        @Override
        public String toString() {
            return "expected landing page to appear";
        }
    };
}
项目:Selenium-Foundation    文件:Coordinators.java   
/**
 * Returns a 'wait' proxy that determines if a new window has opened
 * 
 * @param initialHandles initial set of window handles
 * @return new window handle; 'null' if no new window found
 */
public static Coordinator<String> newWindowIsOpened(final Set<String> initialHandles) {
    return new Coordinator<String>() {

        @Override
        public String apply(SearchContext context) {
            Set<String> currentHandles = WebDriverUtils.getDriver(context).getWindowHandles();
            currentHandles.removeAll(initialHandles);
            if (currentHandles.isEmpty()) {
                return null;
            } else {
                return currentHandles.iterator().next();
            }
        }

        @Override
        public String toString() {
            return "new window to be opened";
        }
    };

}
项目:Selenium-Foundation    文件:Coordinators.java   
/**
 * Returns a 'wait' proxy that determines if the specified window has closed
 * 
 * @param windowHandle handle of window that's expected to close
 * @return 'true' if the specified window has closed; otherwise 'false'
 */
public static Coordinator<Boolean> windowIsClosed(final String windowHandle) {
    return new Coordinator<Boolean>() {

        @Override
        public Boolean apply(SearchContext context) {
            Set<String> currentHandles = WebDriverUtils.getDriver(context).getWindowHandles();
            return Boolean.valueOf( ! currentHandles.contains(windowHandle));
        }

        @Override
        public String toString() {
            return "window with handle '" + windowHandle + "' to be closed";
        }
    };
}
项目:Selenium-Foundation    文件:Coordinators.java   
/**
 * Returns a 'wait' proxy that determines if the first element matched by the specified locator is visible
 * 
 * @param locator web element locator
 * @return web element reference; 'null' if the indicated element is absent or hidden
 */
public static Coordinator<WebElement> visibilityOfElementLocated(final By locator) {
    return new Coordinator<WebElement>() {

        @Override
        public WebElement apply(SearchContext context) {
            try {
                return elementIfVisible(context.findElement(locator));
            } catch (StaleElementReferenceException e) {
                return null;
            }
        }

        @Override
        public String toString() {
            return "visibility of element located by " + locator;
        }
    };

}
项目:Selenium-Foundation    文件:Coordinators.java   
/**
 * Returns a 'wait' proxy that determines if any element matched by the specified locator is visible
 * 
 * @param locator web element locator
 * @return web element reference; 'null' if no matching elements are visible
 */
public static Coordinator<WebElement> visibilityOfAnyElementLocated(final By locator) {
    return new Coordinator<WebElement>() {

        @Override
        public WebElement apply(SearchContext context) {
            try {
                List<WebElement> visible = context.findElements(locator);
                return (WebDriverUtils.filterHidden(visible)) ? null : visible.get(0);
            } catch (StaleElementReferenceException e) {
                return null;
            }
        }

        @Override
        public String toString() {
            return "visibility of element located by " + locator;
        }
    };

}
项目:Selenium-Foundation    文件:Coordinators.java   
/**
 * Returns a 'wait' proxy that determines if an element is either hidden or non-existent.
 *
 * @param locator web element locator
 * @return 'true' if the element is hidden or non-existent; otherwise 'false'
 */
public static Coordinator<Boolean> invisibilityOfElementLocated(final By locator) {
    return new Coordinator<Boolean>() {

        @Override
        public Boolean apply(SearchContext context) {
            try {
                return !(context.findElement(locator).isDisplayed());
            } catch (NoSuchElementException | StaleElementReferenceException e) {
                // NoSuchElementException: The element is not present in DOM.
                // StaleElementReferenceException: Implies that element no longer exists in the DOM.
                return true;
            }
        }

        @Override
        public String toString() {
            return "element to no longer be visible: " + locator;
        }
    };
}
项目:Selenium-Foundation    文件:Coordinators.java   
/**
 * Returns a 'wait' proxy that determines if the specified element reference has gone stale.
 *
 * @param element the element to wait for
 * @return 'false' if the element reference is still valid; otherwise 'true'
 */
public static Coordinator<Boolean> stalenessOf(final WebElement element) {
    return new Coordinator<Boolean>() {
        private final ExpectedCondition<Boolean> condition = conditionInitializer();

        // initializer for [condition] field
        private final ExpectedCondition<Boolean> conditionInitializer() {
            if (element instanceof WrapsElement) {
                return ExpectedConditions.stalenessOf(((WrapsElement) element).getWrappedElement());
            } else {
                return ExpectedConditions.stalenessOf(element);
            }
        }

        @Override
        public Boolean apply(SearchContext ignored) {
            return condition.apply(null);
        }

        @Override
        public String toString() {
            return condition.toString();
        }
    };
}
项目:Selenium-Foundation    文件:WebDriverUtilsTest.java   
@Test
public void testGetDriver() {
    WebDriver driver = getDriver();
    ExamplePage page = getPage();
    WebElement element = page.findElement(By.tagName("html"));

    assertTrue(WebDriverUtils.getDriver((SearchContext) driver) == driver);
    assertTrue(WebDriverUtils.getDriver(page) == driver);
    assertTrue(WebDriverUtils.getDriver(element) == driver);

    try {
        WebDriverUtils.getDriver(mock(SearchContext.class));
        fail("No exception was thrown");
    } catch (UnsupportedOperationException e) {
        assertEquals(e.getMessage(), "Unable to extract the driver from the specified context");
    }
}
项目:Selenium-Foundation    文件:WebDriverUtilsTest.java   
@Test
public void testBrowserName() {
    WebDriver driver = getDriver();
    ExamplePage page = getPage();
    WebElement element = page.findElement(By.tagName("html"));
    SeleniumConfig config = SeleniumConfig.getConfig();
    String browserName = config.getBrowserCaps().getBrowserName();

    assertEquals(WebDriverUtils.getBrowserName((SearchContext) driver), browserName);
    assertEquals(WebDriverUtils.getBrowserName(page), browserName);
    assertEquals(WebDriverUtils.getBrowserName(element), browserName);

    try {
        WebDriverUtils.getBrowserName(mock(WebDriver.class));
        fail("No exception was thrown");
    } catch (UnsupportedOperationException e) {
        assertEquals(e.getMessage(), "The specified context is unable to describe its capabilities");
    }
}
项目:Cognizant-Intelligent-Test-Scripter    文件:AngularFindBy.java   
@SProperty(name = "ng-repeat-cell")
public By getByRepeaterCell(String repeaterVal) {
    String repeater = repeaterVal.split("###")[0];
    int row = Integer.valueOf(repeaterVal.split("###")[1]);
    String column = repeaterVal.split("###")[2];
    return new ByAngularRepeaterCell(NgWebDriver.DEFAULT_ROOT_SELECTOR, repeater, false, row, column) {
        @Override
        public List<WebElement> findElements(SearchContext searchContext) {
            List<WebElement> elements = new ArrayList<>();
            try {
                elements.add(this.findElement(searchContext));
            } catch (Exception ex) {

            }
            return elements;
        }
    };
}
项目:Cognizant-Intelligent-Test-Scripter    文件:AngularFindBy.java   
@SProperty(name = "ng-exactRepeat-row")
public By getByExactRepeaterRow(String repeaterRow) {
    String repeater = repeaterRow.split("###")[0];
    int row = Integer.valueOf(repeaterRow.split("###")[1]);
    return new ByAngularRepeaterRow(NgWebDriver.DEFAULT_ROOT_SELECTOR, repeater, true, row) {
        @Override
        public List<WebElement> findElements(SearchContext searchContext) {
            List<WebElement> elements = new ArrayList<>();
            try {
                elements.add(this.findElement(searchContext));
            } catch (Exception ex) {

            }
            return elements;
        }
    };
}
项目:Cognizant-Intelligent-Test-Scripter    文件:AngularFindBy.java   
@SProperty(name = "ng-exactRepeat-cell")
public By getByExactRepeaterCell(String repeaterVal) {
    String repeater = repeaterVal.split("###")[0];
    int row = Integer.valueOf(repeaterVal.split("###")[1]);
    String column = repeaterVal.split("###")[2];
    return new ByAngularRepeaterCell(NgWebDriver.DEFAULT_ROOT_SELECTOR, repeater, true, row, column) {
        @Override
        public List<WebElement> findElements(SearchContext searchContext) {
            List<WebElement> elements = new ArrayList<>();
            try {
                elements.add(this.findElement(searchContext));
            } catch (Exception ex) {

            }
            return elements;
        }
    };
}
项目:bobcat    文件:PageObjectSelectorListProxyProvider.java   
/**
 * Produces a proxy that will provide value for the list of PageObjects. Handler of this proxy is an
 * instance of PageObjectListInvocationHandler.
 */
@Override
public Optional<Object> provideValue(Object pageObject, Field field, PageObjectContext context) {
  FramePath framePath = frameMap.get(pageObject);
  By selector = PageObjectProviderHelper.getSelectorFromGenericPageObject(field);
  SearchContext searchContext = getSearchContext(context, field);
  NestedSelectorScopedElementLocator locator = new NestedSelectorScopedElementLocator(searchContext,
    context.getElementLocatorFactory(), selector, field.isAnnotationPresent(Global.class));

  PageObjectListInvocationHandler handler
    = new PageObjectListInvocationHandler(PageObjectProviderHelper.getGenericType(field), locator, injector,
      shouldCacheResults(field), framePath);

  ClassLoader classLoader = PageObjectProviderHelper.getGenericType(field).getClassLoader();
  Object proxyInstance = Proxy.newProxyInstance(classLoader, new Class[]{List.class}, handler);

  return Optional.of(proxyInstance);
}
项目:xframium-java    文件:ByWrapper.java   
@Override
public WebElement findElement( SearchContext context )
{
    long startTime = System.currentTimeMillis();
    WebElement returnValue = null;
    try
    {
        returnValue = by.findElement( context );
    }
    finally
    {
        addResult( toString(), (int) (System.currentTimeMillis() - startTime), returnValue != null );
    }


    return returnValue;
}
项目:xframium-java    文件:ByCollection.java   
@Override
public List<WebElement> findElements( SearchContext context )
{
    List<WebElement> elems = new ArrayList<>();
    for ( By by : bys )
    {
        List<WebElement> elementList = by.findElements( context );
        resultList.addAll( ( (ReportableBy) by ).getResults() );
        if ( elementList != null && !elementList.isEmpty())
        {
            elems.addAll( by.findElements( context ) );
            return elems;
        }
    }

    return elems;
}
项目:xframium-java    文件:ByImage.java   
@Override
public List<WebElement> findElements( SearchContext context )
{
    if ( imageName != null )
    {
        Rectangle r = webDriver.getCloud().getCloudActionProvider().findImage( webDriver, imageName, propertyMap );
        if ( r != null )
        {
            List<WebElement> elementList = new ArrayList<WebElement>( 1 );
            elementList.add( new VisualWebElement( webDriver, r ) );
            return elementList;
        }
    }

    return null;
}
项目:xframium-java    文件:ByOCR.java   
@Override
public List<WebElement> findElements( SearchContext context )
{
    if ( text != null )
    {
        Rectangle r = webDriver.getCloud().getCloudActionProvider().findText( webDriver, text, propertyMap );
        if ( r != null )
        {
            List<WebElement> elementList = new ArrayList<WebElement>( 1 );
            elementList.add( new VisualWebElement( webDriver, r ) );
            return elementList;
        }
    }

    return null;
}
项目:menggeqa    文件:WebDriverUnpackUtility.java   
/**
 * This method extract an instance of {@link org.openqa.selenium.WebDriver} from the given
 * {@link org.openqa.selenium.SearchContext}.
 * @param searchContext is an instance of {@link org.openqa.selenium.SearchContext}
 *                It may be the instance of {@link org.openqa.selenium.WebDriver}
 *                or {@link org.openqa.selenium.WebElement} or some other user's
 *                extension/implementation.
 *                Note: if you want to use your own implementation then it should implement
 *                {@link org.openqa.selenium.internal.WrapsDriver} or
 *                      {@link org.openqa.selenium.internal.WrapsElement}
 * @return the instance of {@link org.openqa.selenium.WebDriver}.
 *         Note: if the given {@link org.openqa.selenium.SearchContext} is not
 *         {@link org.openqa.selenium.WebDriver} and it doesn't implement
 *         {@link org.openqa.selenium.internal.WrapsDriver} or
 *         {@link org.openqa.selenium.internal.WrapsElement} then this method returns
 *         null.
 *
 */
public static WebDriver unpackWebDriverFromSearchContext(SearchContext searchContext) {
    if (searchContext instanceof WebDriver) {
        return (WebDriver) searchContext;
    }

    if (searchContext instanceof WrapsDriver) {
        return unpackWebDriverFromSearchContext(
                ((WrapsDriver) searchContext).getWrappedDriver());
    }

    // Search context it is not only Webdriver. Webelement is search context
    // too.
    // RemoteWebElement and MobileElement implement WrapsDriver
    if (searchContext instanceof WrapsElement) {
        return unpackWebDriverFromSearchContext(
                ((WrapsElement) searchContext).getWrappedElement());
    }

    return null;
}
项目:qaf    文件:ByAny.java   
@Override
public List<WebElement> findElements(SearchContext context) {
    if (locators.length == 0) {
        return new ArrayList<WebElement>();
    }
    List<WebElement> elems = new ArrayList<WebElement>();

    for (String locator : locators) {
        By by = LocatorUtil.getBy(locator);
        elems.addAll(by.findElements(context));
        if (!elems.isEmpty()) {
            break;
        }
    }

    return elems;
}
项目:adf-selenium    文件:AdfFinder.java   
@Override
public List<WebElement> findElements(SearchContext searchContext) {
    logger.finer("finding label " + label + " in " + searchContext);
    String safeLabel;
    if (label.contains("'")) {
        // replace each ' with ', "'", ' so we can use it in a concat expression
        // makes concat('O', "'", 'Neil') from O'Neil
        safeLabel = "concat('" + label.replace("'", "', \"'\", '") + "')";
    } else {
        safeLabel = "'" + label + "'";
    }
    // start from . for instances where we are searching within a scoped element
    // tr elements having a _afrrk (rowkey) attribute are considered tree nodes
    String xpath = ".//tr[@_afrrk and .//span[text()=" + safeLabel + "]]";
    logger.finer("using xpath " + xpath);
    return ((FindsByXPath) searchContext).findElementsByXPath(xpath);
}
项目:JDI    文件:GetElementModule.java   
private SearchContext getSearchContext(Object element) {
    if (element == null || !isClass(element.getClass(), BaseElement.class))
        return getDefaultContext();
    BaseElement bElement = (BaseElement) element;
    if (bElement.useCache && isClass(bElement.getClass(), Element.class)) {
        Element el = (Element) bElement;
        if (el.avatar.hasWebElement())
            return el.avatar.webElement;
    }
    Object p = bElement.getParent();
    By locator = bElement.getLocator();
    By frame = bElement.avatar.frameLocator;
    SearchContext searchContext = frame != null
        ? getFrameContext(frame)
        : p == null || containsRoot(locator)
            ? getDefaultContext()
            : getSearchContext(p);
    return locator != null
            ? searchContext.findElement(correctLocator(locator))
            : searchContext;
}
项目:JDI    文件:GetElementModule.java   
private SearchContext getSearchContext(Object element) {
    Object p;
    BaseElement bElement;
    Element el;
    if (element == null || !isClass(element.getClass(), BaseElement.class)
            || ((p = (bElement = (BaseElement) element).getParent()) == null
            && bElement.avatar.frameLocator == null))
        return getDriver().switchTo().defaultContent();
    if (isClass(bElement.getClass(), Element.class) && (el = (Element) bElement).avatar.hasWebElement())
        return el.getWebElement();
    By locator = bElement.getLocator();
    SearchContext searchContext = containsRoot(locator)
            ? getDriver().switchTo().defaultContent()
            : getSearchContext(p);
    locator = containsRoot(locator)
            ? trimRoot(locator)
            : locator;
    By frame = bElement.avatar.frameLocator;
    if (frame != null)
        getDriver().switchTo().frame((WebElement)getDriver().findElement(frame));
    return locator != null
            ? searchContext.findElement(correctXPaths(locator))
            : searchContext;
}
项目:JDI    文件:TreeDropdown.java   
@Override
protected void selectAction(String name) {
    expandAction();
    String[] nodes = name.split(" > ");
    SearchContext context = getDriver();
    if (treeLocators.size() < nodes.length) return;
    for(int i=0; i < nodes.length; i++) {
        String value = nodes[i];
        List<WebElement> els = context.findElements(correctXPaths(treeLocators.get(i)));
        if (els.size() == 0)
            throw exception("No elements found for locator: " + treeLocators.get(i) + "in TreeDropdown " + this);
        context = first(els, el -> el.getText().equals(value));
        if (context == null)
            throw exception("Can't find: " + value + "in TreeDropdown " + this);
        if (i < nodes.length - 1) {
            int next = i + 1;
            boolean nextValue =
                    LinqUtils.any(context.findElements(correctXPaths(treeLocators.get(next))), el -> el.getText().equals(nodes[next]));
            if (nextValue) continue;
        }
        ((WebElement) context).click();
    }
}
项目:AugmentedDriver    文件:AugmentedAndroidFunctions.java   
@Inject
public AugmentedAndroidFunctions(@Assisted SearchContext searchContext,
                                 @Named(PropertiesModule.WAIT_IN_SECONDS) String waitTimeInSeconds,
                                 @Named(PropertiesModule.PRESS_TIME_IN_MILLISECONDS) String pressTimeInMilliSeconds,
                                 @Named(PropertiesModule.SWIPE_QUANTITY) String swipeQuantity,
                                 @Named(PropertiesModule.TAP_FINGERS) String tapFingers,
                                 AugmentedAndroidElementFactory augmentedAndroidElementFactory,
                                 AugmentedAndroidDriverProvider augmentedAndroidDriverProvider) {
    this.searchContext = Preconditions.checkNotNull(searchContext);
    this.augmentedAndroidDriveProvider = Preconditions.checkNotNull(augmentedAndroidDriverProvider);
    this.pressTimeInMilliSeconds = Integer.valueOf(Preconditions.checkNotNull(pressTimeInMilliSeconds));
    this.swipeQuantity = Integer.valueOf(Preconditions.checkNotNull(swipeQuantity));
    this.tapFingers = Integer.valueOf(Preconditions.checkNotNull(tapFingers));
    this.waitTimeInSeconds= Integer.valueOf(Preconditions.checkNotNull(waitTimeInSeconds));
    this.augmentedAndroidElementFactory = Preconditions.checkNotNull(augmentedAndroidElementFactory);
}
项目:AugmentedDriver    文件:AugmentedIOSFunctions.java   
@Inject
public AugmentedIOSFunctions(@Assisted SearchContext searchContext,
                             @Named(PropertiesModule.WAIT_IN_SECONDS) String waitTimeInSeconds,
                             @Named(PropertiesModule.PRESS_TIME_IN_MILLISECONDS) String pressTimeInMilliSeconds,
                             @Named(PropertiesModule.SWIPE_QUANTITY) String swipeQuantity,
                             @Named(PropertiesModule.TAP_FINGERS) String tapFingers,
                             AugmentedIOSElementFactory augmentedIOSElementFactory,
                             AugmentedIOSDriverProvider augmentedIOSDriverProvider) {
    this.searchContext = Preconditions.checkNotNull(searchContext);
    this.augmentedIOSDriverProvider = Preconditions.checkNotNull(augmentedIOSDriverProvider);
    this.pressTimeInMilliSeconds = Integer.valueOf(Preconditions.checkNotNull(pressTimeInMilliSeconds));
    this.swipeQuantity = Integer.valueOf(Preconditions.checkNotNull(swipeQuantity));
    this.tapFingers = Integer.valueOf(Preconditions.checkNotNull(tapFingers));
    this.waitTimeInSeconds= Integer.valueOf(Preconditions.checkNotNull(waitTimeInSeconds));
    this.augmentedIOSElementFactory = Preconditions.checkNotNull(augmentedIOSElementFactory);
}
项目:UIFramework    文件:SizzleSelector.java   
private void fixLocator(SearchContext context, String cssLocator,
        WebElement element) {

    if (element instanceof RemoteWebElement) {
        try {
            @SuppressWarnings("rawtypes")
            Class[] parameterTypes = new Class[] { SearchContext.class,
                    String.class, String.class };
            Method m = element.getClass().getDeclaredMethod("setFoundBy",
                    parameterTypes);
            m.setAccessible(true);
            Object[] parameters = new Object[] { context, "css selector",
                    cssLocator };
            m.invoke(element, parameters);
        } catch (Exception e) {
            logger.error("Something bad happened when fixing locator", e);
        }
    }
}
项目:redsniff    文件:ExtraExpectedConditions.java   
@Deprecated
/**
 * @deprecated - use FindingExpectations#presenceOf
 * @param finder
 * @return
 */
public static ExpectedCondition<WebElement> presenceOfA(final MFinder<WebElement,SearchContext> finder){
    return new ExpectedCondition<WebElement>(){
        @Override
        public String toString() {
            return new StringDescription().appendDescriptionOf(finder).toString();
        }

        @Override
        public WebElement apply(WebDriver driver) {
            ExpectationCheckResult<WebElement, CollectionOf<WebElement>> result = checkerFor((SearchContext) driver).resultOfChecking(expectationOfSome(finder));
            if(result.meetsExpectation())
                return result.foundQuantity().iterator().next();
            else
                return null;
        }
    };
}
项目:redsniff    文件:ExtraExpectedConditions.java   
public static ExpectedCondition<Boolean> invisibilityOf(final MFinder<WebElement, SearchContext> finder){
    return new ExpectedCondition<Boolean>(){
        @Override
        public Boolean apply(WebDriver driver) {
            Collection<WebElement> foundElements = checkerFor((SearchContext) driver).thatWhichIsFoundBy(expectationOfSome(finder));
            if(foundElements.isEmpty())
                return true;
            else {
                for(WebElement element:foundElements){
                    try{
                        if(element.isDisplayed())
                            return false;
                    }catch(StaleElementReferenceException e){} // if stale this implies element is not displayed so we can skip over it
                }
                return true;
            }
        }

        @Override
        public String toString() {
            return newDescription().appendDescriptionOf(finder).appendText(" to be invisible or not present").toString();
        }
    };
}
项目:hsac-fitnesse-fixtures    文件:SeleniumHelper.java   
/**
 * Perform action/supplier in context.
 * @param context context to perfom action in.
 * @param action action to perform.
 * @param <R> type of action result.
 * @return action result.
 */
public <R> R doInContext(SearchContext context, Supplier<R> action) {
    R result;
    if (context == null) {
        result = action.get();
    } else {
        // store current context (without triggering exception if it was stale)
        SearchContext currentSearchContext = currentContext;
        boolean contextIsStale = currentContextIsStale;

        setCurrentContext(context);
        try {
            result = action.get();
        } finally {
            // make original current context active again
            currentContext = currentSearchContext;
            currentContextIsStale = contextIsStale;
        }
    }
    return result;
}
项目:seletest    文件:BySelector.java   
@SuppressWarnings("unchecked")
@Override
public List<WebElement> findElements(SearchContext context) {
    Object o;
    try {
        String jQueryLoader = readFile(getClass().getResourceAsStream(JQUERY_LOAD_SCRIPT));
        ((JavascriptExecutor) context).executeAsyncScript(jQueryLoader);
        log.debug("JQuery library injected from file {}!!!", getClass().getClassLoader().getResource(JQUERY_LOAD_SCRIPT).getPath());
    } catch (IOException e) {
        log.error("Error trying to inject jquery: " + e);
    }

    if (siblingSelector != null || !siblingSelector.isEmpty()) {
        o = ((JavascriptExecutor) context)
                .executeScript("return $('" + ownSelector + "').siblings('" + siblingSelector + "');");
    } else {
        o = ((JavascriptExecutor) context)
                .executeScript("return $('" + ownSelector + "').siblings();");
    }
    return (List<WebElement>) o;
}
项目:seletest    文件:BySelector.java   
@SuppressWarnings("unchecked")
@Override
public List<WebElement> findElements(SearchContext context) {
    Object o;
    try {
        String jQueryLoader = readFile(getClass().getResourceAsStream(JQUERY_LOAD_SCRIPT));
        ((JavascriptExecutor) context).executeAsyncScript(jQueryLoader);
        log.debug("JQuery library injected from file {}!!!", getClass().getClassLoader().getResource(JQUERY_LOAD_SCRIPT).getPath());
    } catch (IOException e) {
        log.error("Error trying to inject jquery: " + e);
    }

    if (parentSelector != null || !parentSelector.isEmpty()) {
        o = ((JavascriptExecutor) context)
                .executeScript("return $('" + ownSelector + "').parent('" + parentSelector + "');");
    } else {
        o = ((JavascriptExecutor) context)
                .executeScript("return $('" + ownSelector + "').parent();");
    }
    return (List<WebElement>) o;
}
项目:hsac-fitnesse-fixtures    文件:JavascriptBy.java   
@Override
public List<WebElement> findElements(SearchContext searchContext) {
    List<WebElement> result;
    JavascriptExecutor executor = JavascriptHelper.getJavascriptExecutor(searchContext);
    Object results = JavascriptHelper.executeScript(executor, script, scriptParameters);
    if (results instanceof List) {
        result = (List<WebElement>) results;
    } else {
        if (results == null) {
            result = Collections.emptyList();
        } else {
            throw new RuntimeException("Script returned something else than a list: " + results);
        }
    }
    return result;
}
项目:phoenix.webui.framework    文件:AbstractSeleniumAttrLocator.java   
@Override
public WebElement findElement(SearchContext driver)
{
    String attrName = getAttrName();
    String attrVal = getValue();
    By by = getBy();

    List<WebElement> elementList = driver.findElements(by);
    for(WebElement ele : elementList)
    {
        if(driver instanceof WebDriver)
        {
            new Actions((WebDriver) driver).moveToElement(ele);
        }

        if(attrVal.equals(ele.getAttribute(attrName)))
        {
            return ele;
        }
    }

    return null;
}
项目:phoenix.webui.framework    文件:AbstractLocator.java   
@SuppressWarnings("unchecked")
public E findElement(SearchContext driver)
{
    By by = getBy();

    if(driver instanceof WebDriver)
    {
        elementWait((WebDriver) driver, getTimeout(), by);
    }

    return (E) driver.findElement(by);
}
项目:phoenix.webui.framework    文件:AbstractLocator.java   
@SuppressWarnings("unchecked")
public List<E> findElements(SearchContext driver)
{
    By by = getBy();

    if(driver instanceof WebDriver)
    {
        elementWait((WebDriver) driver, getTimeout(), by);
    }

    return (List<E>) driver.findElements(by);
}