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 class AddEntityLinkSectionAuthorize { @Inject private PageBinder pageBinder; @ElementBy(id = "authorize-link") private PageElement authorizeLink; public OAuthConfirmPage<AddEntityLinkSection> authorize() { Poller.waitUntilTrue(authorizeLink.timed().isVisible()); authorizeLink.click(); return pageBinder.bind(OAuthConfirmPage.class, pageBinder.bind(AddEntityLinkSection.class)); } }
public class ProgressDialog extends WebDriverElement { @ElementBy(id = "status") PageElement status; @Inject private WebdriverUtils webdriverUtils; public ProgressDialog(By locator) { super(locator); } @WaitUntil public void dialogVisible() { Poller.waitUntilTrue(status.timed().isVisible()); } }
/** * TODO: Document this class / interface here * * @since v5.0 */ @PublicApi public class WelcomeVideoDialog { @ElementBy(className = "dialog-title") private PageElement dialogTitle; }
@PublicApi public abstract class PropertyPanel { @ElementBy(id = "property-panel") protected PageElement propertyPanelElement; }
@PublicApi public class ConfluenceAboutDialog extends Dialog2 { @ElementBy(className = "aui-dialog2-content") private PageElement dialogBody; private static final String ID = "about-confluence-dialog"; public ConfluenceAboutDialog() { super(ID); } public TimedCondition isContentLoaded() { return getContent().timed().hasAttribute("id", "about-page-content"); } }
@PublicApi public class NoOpPage implements Page { private static final String URI = "/noop.jsp"; @ElementBy(tagName = "body") PageElement bodyElement; @Override public String getUrl() { return URI; } public TimedCondition isLoaded() { return Conditions.isEqual("This is the noop page.", bodyElement.timed().getText()); } }