public class DeleteEntityLinkSectionStep2 { @ElementBy(xpath = "//div[@id='delete-application-link-dialog']/div[2]/div[2]/button") private PageElement confirmButton; public DeleteEntityLinkSectionStep2 confirm() { Poller.waitUntilTrue(confirmButton.timed().isVisible()); confirmButton.click(); return this; } }
public class LikesDialog extends ConfluenceAbstractPageComponent { @ElementBy(id = "likes-dialog-body") private PageElement likesDialog; public TimedQuery<Boolean> isLikesDialogVisible() { return likesDialog.withTimeout(TimeoutType.SLOW_PAGE_LOAD).timed().isVisible(); } public int likesUsers() { return likesDialog.findAll(By.cssSelector("li.toolbar-item")).size(); } }
public class OutgoingConnectivityDialog extends ConnectivityDialog { @ElementBy(id = "oauth-mismatch-right-dialog") private PageElement dialog; @Override protected PageElement getDialog() { return dialog; } }
public class JiraAddUserPage implements Page { @ElementBy(id = "dvcs-bitucket-extension") PageElement dvcsExtensionsPanel; @Override public String getUrl() { return "/secure/admin/user/AddUser!default.jspa"; } public void checkPanelPresented() { Poller.waitUntilTrue("Expected DVCS extension panel - Bitbucket grups", dvcsExtensionsPanel.timed().isVisible()); } }
public class ResourceNotFoundPage { @ElementBy(className = "aui-message") PageElement auiMessage; public boolean notFoundErrorDisplayed() { return auiMessage.isPresent() && auiMessage.getText().contains("The requested file cannot be found on the server"); } }
public class PersonalSpaceDetailsHintFlyout extends ConfluenceAbstractPageComponent { public static final String MESSAGE_CLASS = "personal-space-logo-hint"; @ElementBy(cssSelector = ".personal-space-logo-hint a") private PageElement avatarEditorLink; public void clickAvatarEditorLink() { avatarEditorLink.click(); } public boolean containsLink(String link) { return avatarEditorLink.getAttribute("href").contains(link); } }
public class PageWatcher extends ConfluenceAbstractPageComponent { @ElementBy(cssSelector = "#watch-content-button .aui-icon") private PageElement watchButton; public Boolean isWatching() { return watchButton.hasClass("aui-iconfont-watch"); } public Boolean isNotWatching() { return watchButton.hasClass("aui-iconfont-unwatch"); } }
public class IncomingConnectivityDialog extends ConnectivityDialog { @ElementBy(id = "oauth-mismatch-left-dialog") private PageElement dialog; @Override protected PageElement getDialog() { return dialog; } }
public class GithubGrantAccessPage implements Page { @ElementBy(name = "authorize") PageElement githubWebAuthorizeButton; @Override public String getUrl() { throw new UnsupportedOperationException(); } public void grantAccess() { githubWebAuthorizeButton.click(); } }
public class BitbucketHomePage implements Page { @ElementBy(id = "homepage", timeoutType = PAGE_LOAD) private PageElement homepage; @Override public String getUrl() { return "/"; } @WaitUntil public void waitUntilLoaded() { waitUntilTrue(homepage.timed().isPresent()); } }
public class NoPermissionPage { @ElementBy(tagName="body") protected PageElement body; public boolean noPermissionErrorDisplayed() { return body.find(By.tagName("h2")).getText().contains("You are not authorized to view this page. Please log in as an administrator or contact your administrators for help."); } }
public static class MergePullRequestDialog extends WebDriverElement { @ElementBy(xpath = ".//button[text() = 'Merge']") private PageElement mergeButton; public MergePullRequestDialog(By locator) { super(locator); } public void merge() { mergeButton.click(); } } }
public class ViewGeneralConfigurationPage extends BasePage { @ElementBy(id = "support-tools-home") protected PageElement supportToolsHome; @Override public String getUrl() { return "/secure/admin/ViewApplicationProperties.jspa"; } public boolean supportToolsHomeExists() { return supportToolsHome.isPresent(); } }
/** * Represent the editor for editing an existing comment */ public static class QuickEdit extends EditComment { @ElementBy(cssSelector = ".quick-comment-container.edit") private PageElement quickCommentContainer; public TimedCondition isEditCommentEditorVisible() { return quickCommentContainer.find(By.id("wysiwyg")).timed().isVisible(); } public TimedQuery<String> getTimedCommentThreadId() { return quickCommentContainer.find(By.xpath("..")).timed().getAttribute("id"); } }
public static class DeclinePullRequestDialog extends WebDriverElement { @ElementBy(id = "id_reason") private PageElement reasonElement; @ElementBy(xpath = ".//button[text() = 'Decline']") private PageElement declineButton; public DeclinePullRequestDialog(By locator) { super(locator); } public void decline(String reason) { reasonElement.clear().type(reason); declineButton.click(); } }
/** * Represents the editor for a new reply */ public static class NewReply extends EditComment { @ElementBy(cssSelector = ".quick-comment-container.reply") private PageElement quickCommentContainer; public TimedQuery<String> getTimedParentThreadId() { return quickCommentContainer.find(By.xpath("../../..")).timed().getAttribute("id"); } public boolean isSlowComment() { return !getEditor().isQuickEdit().now() && driver.getCurrentUrl().contains("replyToComment="); } }
public class BlueprintBlankExperience implements PageComponent { @ElementBy(cssSelector = "div.blueprint-blank-experience") private PageElement container; public void BlueprintBlankExperience() { } public TimedCondition isVisible() { return container.timed().isVisible(); } public TimedQuery<String> getText() { return container.timed().getText(); } public TimedElement findLinkWithText(String text) { return container.find(By.xpath("//a[text()='" + text + "']")).timed(); } }
/** * Represents the 'Feature Discovery' part of the page after approving a connection */ public class FeatureDiscoveryDialog extends AbstractComponentPageObject { public static final String FEATURE_DISCOVERY_DIALOG_ID = "dvcs-feature-discovery-dialog"; @ElementBy(className = "aui-iconfont-close-dialog") private PageElement closeDialogLink; public FeatureDiscoveryDialog(PageElement container) { super(container); } public PageElement getCloseDialogLink() { return closeDialogLink; } }
public class XsrfWarning { @ElementBy(id = "xsrf-token-missing-header") private PageElement header; @ElementBy(id = "xsrf-retry") private PageElement retryButton; public boolean isVisible() { Poller.waitUntilTrue(header.timed().isVisible()); //applinks.properties: applinks.xsrf.token.missing return "XSRF Security Token Missing".equals(header.getText()); } public void retryOperation() { retryButton.click(); } }
public static class ForceSyncDialog extends AbstractComponentPageObject { @ElementBy(className = "full-sync-trigger") private PageElement fullSyncButton; public ForceSyncDialog(PageElement container) { super(container); } public void fullSync() { fullSyncButton.click(); Poller.waitUntilFalse(isOpen()); } public TimedCondition isOpen() { return container.timed().isVisible(); } }