public PageElement find(By by, Predicate<PageElement> filter) { // TODO retarded. Need to upgrade Guava in JIRA to use the .find() with default value param! try { return Iterables.find(elementFinder.findAll(by), filter); } catch(NoSuchElementException e) { return null; } }
/** * @deprecated use isNewBannerPresent instead */ @Deprecated public boolean isDiscoverNewBannerPresent() { return pageElementFinder.findAll(By.id("discover-new-banner")).size() != 0; }
public static TimedCondition isAtLeastOneElementVisibleCondition(By by, PageElementFinder elementFinder, TimeoutType timeout) { final TimeoutType finalTimeout = timeout; return Conditions.or(Lists.transform(elementFinder.findAll(by, timeout), new Function<PageElement, TimedQuery<Boolean>>() { public TimedQuery<Boolean> apply(PageElement from) { return from.withTimeout(finalTimeout).timed().isVisible(); } })); } }
public List<String> getRecentSpaces() { List<PageElement> spaces = pageElementFinder.findAll(By.cssSelector("#recent-spaces-section li")); return Lists.transform(spaces, PageElement::getText); } }
/** * Returns the number of columns in the current layout of the content */ public int getNumberOfColumns() { return execute.onTinyMceIFrame(() -> page.findAll(getColumnLocator()).size()); }
public AppDetail getToAppDetail() { if (isPresent()) { return (AppDetail) elementFinder.findAll(By.className("appDetail")).get(1); } return null; }
@Override public List<String> getInfoMessages() { return getTextsFromElements(finder.findAll(By.cssSelector("header + .aui-message.info.last-edited"))); }
public List<QunitTestMeta> getAllTests() { List<PageElement> links = elementFinder.findAll(By.cssSelector("a.testlink")); List<QunitTestMeta> results = new LinkedList<QunitTestMeta>(); for (PageElement link : links) { String href = link.getAttribute("href"); results.add(QunitTestMeta.createFromUrl(href)); } return results; } @Override
public void waitUntilRecipientLinkIsVisible(UserWithDetails recipient) { waitUntilTrue(Conditions.forSupplier(() -> pageElementFinder.findAll(By.cssSelector(".aui-flag .aui-message-success a.confluence-userlink")).stream() .filter(pageElement -> pageElement.getText().equals(recipient.getFullName())) .findFirst().map(element -> element.isVisible()).orElse(false))); }
/** * Return the cell type for a certain cell, querying data-type attribute. Note that the column index is 1 based. */ public String getColumnDataType(final int column) { return execute.onTinyMceIFrame(() -> page.findAll(getCellLocator()).get(column - 1).getAttribute("data-type")); }
/** * @param row is 1 index based * @param column is 1 index based */ public TimedQuery<String> getTimedPageLayoutsCellContent(final int row, final int column) { return Queries.forSupplier(timeouts, () -> execute.onTinyMceIFrame(() -> page.findAll(By.cssSelector(".columnLayout:nth-child(" + (row) + ") .cell .innerCell")).get(column - 1).getText().trim())); }
/** * @return a list of links in the current editor. There is no guaranteed ordering and may not appear in page order. * @since 5.8.0 */ public TimedQuery<List<EditorEmbeddedLink>> getAllLinks() { return Queries.forSupplier(timeouts, () -> execute.onTinyMceIFrame(() -> { final Iterable<PageElement> allLinks = page.findAll(By.cssSelector("a[href]")); //this list must not be lazy, since we need to execute it in the context of the editor iframe. return ImmutableList.copyOf(transform(allLinks, toEditorEmbeddedLink())); })); }
/** * Disables all the blueprints */ public <T> T disableAllContentBlueprints(Class<T> templatePage, Space space) { List<PageElement> allPlugins = pageElementFinder.findAll(By.className(PLUGIN_CLASSNAME)); allPlugins.stream() .map(plugin -> new ItContentBlueprint(plugin.getAttribute(BLUEPRINT_KEY_ATTRIBUTE))) .forEach(blueprint -> disable(blueprint, templatePage, space)); return returnBoundPage(templatePage, space); }
public <T> T enableAllContentBlueprints(final Class<T> templatePage, final Space space) { List<PageElement> allPlugins = pageElementFinder.findAll(By.className(PLUGIN_CLASSNAME)); allPlugins.stream() .map(plugin -> new ItContentBlueprint(plugin.getAttribute(BLUEPRINT_KEY_ATTRIBUTE))) .forEach(blueprint -> enable(blueprint, templatePage, space)); return returnBoundPage(templatePage, space); }
public void expandNavigatorSection(final String sectionId) { if (!elementFinder.findAll(By.id(sectionId)).isEmpty()) { final String toggleClass = elementFinder.find(By.xpath("//fieldset[@id='" + sectionId + "']")).getAttribute("class"); if (toggleClass.contains("collapsed")) { elementFinder.find(By.xpath("//fieldset[@id='" + sectionId + "']/legend/span")).click(); } } }
/** * Type content in the given column index. It assumes that a column page layout has been applied. Note the column * index is 1-based. */ public void typeInColumn(final int column, final String content) { execute.onTinyMceIFrame(() -> { typeIn(page.findAll(getRenderedContent().getColumnLocator()).get(column - 1), content); return null; }); }
public String getRepositoryIdFromRepositoryName(String queriedRepositoryName) { for (PageElement repositoryRow : elementFinder.findAll(By.className("dvcs-repo-row"))) { String repositoryName = repositoryRow.find(By.className("dvcs-org-reponame")).find(By.tagName("a")).getText(); if (repositoryName.equals(queriedRepositoryName)) { String id = repositoryRow.getAttribute("id"); return id.replaceAll("dvcs-repo-row-", ""); } } return null; }
public AddSpaceForm next() { AddSpaceForm form = submit(AddSpaceForm.class); if (pageElementFinder.findAll(By.cssSelector("#" + getId() + " .icon-required")).size() > 0) Poller.waitUntilFalse(getSubmitButton().timed().isEnabled()); return form; }
public List<String> getRemoteEntityLinkOptions() { waitUntilTrue(keyField.timed().isVisible()); keyField.type(Keys.ARROW_DOWN); // wait for first element remote-entity waitUntilTrue(elementFinder.find(By.className("remote-entity"), TimeoutType.DIALOG_LOAD).timed().isVisible()); return transform(elementFinder.findAll(By.className("remote-entity")), new GetTextFunction()); } }
@Override public void addUserOrGroup(Subject subject, int index) { String userName = getUsernameForSubject(subject); userPickerInput.type(userName); PageElementFinder select2DropDown = pageElementFinder.find(By.id("select2-drop")); waitUntilTrue(select2DropDown.find(By.cssSelector(".select2-result-label")).timed().isPresent()); List<PageElement> entities = select2DropDown.findAll(By.cssSelector("[data-username=\"" + userName + "\"]")); entities.get(index).click(); waitUntilTrue("First entry in user picker should have expected text", firstUserInPicker.timed().hasText(subject.getDisplayName())); addButton.click(); }