@Override public AbsPage zPressButton(Button button) throws HarnessException { tracer.trace("Click button " + button); if (button == null) throw new HarnessException("Button cannot be null"); AbsPage page = null; String locator = null; String subLocator = null; if (button == Button.B_TREE_NEWADDRESSBOOK) { locator = "css=div[id=main_Contacts-parent-ADDRBOOK] div[class*=ImgContextMenu]"; subLocator = "css=div#ZmActionMenu_contacts_ADDRBOOK td#NEW_ADDRBOOK_title"; page = new DialogCreateFolder(MyApplication, ((AppAjaxClient) MyApplication).zPageAddressbook); } else if (button == Button.B_TREE_NEWTAG) { // locator = zNewTagIcon; locator = "css=div[id=main_Contacts-parent-TAG] div[class*=ImgContextMenu]"; // td#ztih__main_Contacts__TAG_optCell"; subLocator = "css=div#ZmActionMenu_contacts_TAG td#NEW_TAG_title"; page = new DialogTag(MyApplication, ((AppAjaxClient) MyApplication).zPageAddressbook); } else { throw new HarnessException("no logic defined for button " + button); } // Default behavior, process the locator by clicking on it // // Make sure the button exists if (!this.sIsElementPresent(locator)) throw new HarnessException("Button is not present locator=" + locator + " button=" + button); // Click it this.zClickAt(locator, ""); // If the app is busy, wait for that to finish this.zWaitForBusyOverlay(); // Make sure the subLocator exists if (!this.sIsElementPresent(subLocator)) throw new HarnessException("Button is not present locator=" + subLocator); this.zClick(subLocator); // If the app is busy, wait for that to finish this.zWaitForBusyOverlay(); // If page was specified, make sure it is active if (page != null) { // This function (default) throws an exception if never active page.zWaitForActive(); } return (page); }
public AbsPage zPressButton(Button button) throws HarnessException { logger.info(myPageName() + " zDisplayPressButton(" + button + ")"); tracer.trace("Click " + button); AbsPage page = this; String locator = null; boolean doPostfixCheck = false; if (button == Button.B_VIEW_ENTIRE_MESSAGE) { locator = this.ContainerLocator + " span[id$='_msgTruncation_link']"; if (!this.sIsElementPresent(locator)) throw new HarnessException("locator is not present for button " + button + " : " + locator); this.sClick(locator); // sClick() is required for this element this.zWaitForBusyOverlay(); return (page); } else if (button == Button.B_HIGHLIGHT_OBJECTS) { locator = this.ContainerLocator + " span[id$='_highlightObjects_link']"; if (!this.sIsElementPresent(locator)) throw new HarnessException("locator is not present for button " + button + " : " + locator); this.sClick(locator); // sClick() is required for this element this.zWaitForBusyOverlay(); return (page); } else if (button == Button.B_ACCEPT) { locator = DisplayMail.Locators.AcceptButton; page = null; doPostfixCheck = true; } else if (button == Button.O_ACCEPT_NOTIFY_ORGANIZER) { locator = DisplayMail.Locators.AcceptNotifyOrganizerMenu; page = null; doPostfixCheck = true; } else if (button == Button.O_ACCEPT_EDIT_REPLY) { locator = DisplayMail.Locators.AcceptEditReplyMenu; page = null; doPostfixCheck = true; } else if (button == Button.O_ACCEPT_DONT_NOTIFY_ORGANIZER) { locator = DisplayMail.Locators.AcceptDontNotifyOrganizerMenu; page = null; doPostfixCheck = true; } else if (button == Button.B_TENTATIVE) { locator = DisplayMail.Locators.TentativeButton; page = null; doPostfixCheck = true; } else if (button == Button.O_TENTATIVE_NOTIFY_ORGANIZER) { locator = DisplayMail.Locators.TentativeNotifyOrganizerMenu; page = null; doPostfixCheck = true; } else if (button == Button.O_TENTATIVE_EDIT_REPLY) { locator = DisplayMail.Locators.TentativeEditReplyMenu; page = null; doPostfixCheck = true; } else if (button == Button.O_TENTATIVE_DONT_NOTIFY_ORGANIZER) { locator = DisplayMail.Locators.TentativeDontNotifyOrganizerMenu; page = null; doPostfixCheck = true; } else if (button == Button.B_DECLINE) { locator = DisplayMail.Locators.DeclineButton; page = null; doPostfixCheck = true; } else if (button == Button.O_DECLINE_NOTIFY_ORGANIZER) { locator = DisplayMail.Locators.DeclineNotifyOrganizerMenu; page = null; doPostfixCheck = true; } else if (button == Button.O_DECLINE_EDIT_REPLY) { locator = DisplayMail.Locators.DeclineEditReplyMenu; page = null; doPostfixCheck = true; } else if (button == Button.O_DECLINE_DONT_NOTIFY_ORGANIZER) { locator = DisplayMail.Locators.DeclineDontNotifyOrganizerMenu; page = null; doPostfixCheck = true; } else if (button == Button.B_PROPOSE_NEW_TIME) { locator = DisplayMail.Locators.ProposeNewTimeButton; page = null; } else if (button == Button.B_ACCEPT_SHARE) { locator = this.ContainerLocator + " td[id$='__Shr__SHARE_ACCEPT_title']"; page = new SeparateWindowDialog(DialogWarningID.ZmAcceptShare, MyApplication, this); ((SeparateWindowDialog) page).zSetWindowTitle(this.DialogWindowTitle); doPostfixCheck = true; } else if (button == Button.B_DECLINE_SHARE) { locator = this.ContainerLocator + " td[id$='__Shr__SHARE_DECLINE_title']"; page = new SeparateWindowDialog(DialogWarningID.ZmAcceptShare, MyApplication, this); ((SeparateWindowDialog) page).zSetWindowTitle(this.DialogWindowTitle); doPostfixCheck = true; } else { throw new HarnessException("no implementation for button: " + button); } if (locator == null) throw new HarnessException("no locator defined for button " + button); if (!this.sIsElementPresent(locator)) throw new HarnessException("locator is not present for button " + button + " : " + locator); this.zClick(locator); this.zWaitForBusyOverlay(); if (page != null) { page.zWaitForActive(); } if (doPostfixCheck) { // Make sure the response is delivered before proceeding Stafpostqueue sp = new Stafpostqueue(); sp.waitForPostqueue(); } return (page); }
public AbsPage zToolbarPressPulldown(Button pulldown, Button option) throws HarnessException { logger.info( myPageName() + " zToolbarPressButtonWithPulldown(" + pulldown + ", " + option + ")"); tracer.trace("Click pulldown " + pulldown + " then " + option); if (pulldown == null) throw new HarnessException("Pulldown cannot be null!"); if (option == null) throw new HarnessException("Option cannot be null!"); // Default behavior variables String containerToolbar = "css=div[id^='ztb__MSG']"; String containerActionMenu = "css=div[id^='zm__MSG']"; String pulldownLocator = null; // If set, this will be expanded String optionLocator = null; // If set, this will be clicked AbsPage page = null; // If set, this page will be returned if (pulldown == Button.B_ACTIONS) { pulldownLocator = containerToolbar + " div[id$='__ACTIONS_MENU'] td[id$='_dropdown']>div"; if (option == Button.B_PRINT) { optionLocator = containerActionMenu + " div[id='PRINT'] td[id$='_title']"; page = null; throw new HarnessException("implement me"); // Need to implement the print dialog // FALL THROUGH } else if (option == Button.B_RESPORTSPAM) { optionLocator = containerActionMenu + " div[id='SPAM'] td[id$='_title']"; page = null; // FALL THROUGH } else if (option == Button.B_RESPORTNOTSPAM) { optionLocator = containerActionMenu + " div[id='SPAM'] td[id$='_title']"; page = null; // FALL THROUGH } else if (option == Button.O_MARK_AS_READ) { optionLocator = containerActionMenu + " div[id='MARK_READ'] td[id$='_title']"; page = null; // FALL THROUGH } else if (option == Button.O_MARK_AS_UNREAD) { optionLocator = containerActionMenu + " div[id='MARK_UNREAD'] td[id$='_title']"; page = null; // FALL THROUGH } else if (option == Button.O_SHOW_ORIGINAL) { optionLocator = containerActionMenu + " div[id='SHOW_ORIG'] td[id$='_title']"; page = null; // FALL THROUGH } else if (option == Button.B_REDIRECT) { optionLocator = containerActionMenu + " div[id='REDIRECT'] td[id$='_title']"; page = new SeparateWindowDialogRedirect(this.MyApplication, this); // FALL THROUGH } else if (option == Button.O_EDIT_AS_NEW) { optionLocator = containerActionMenu + " div[id='EDIT_AS_NEW'] td[id$='_title']"; page = null; // FALL THROUGH } else { throw new HarnessException( "no logic defined for pulldown/option " + pulldown + "/" + option); } } else if (pulldown == Button.B_TAG) { pulldownLocator = containerToolbar + " div[id$='__TAG_MENU'] td[id$='_dropdown']>div"; if (option == Button.O_TAG_NEWTAG) { optionLocator = "css=td[id$='__TAG_MENU|MENU|NEWTAG_title']"; page = null; // new DialogTag(this.MyApplication, this); throw new HarnessException("implement me"); // Need to implement the 'new tag' dialog // FALL THROUGH } else if (option == Button.O_TAG_REMOVETAG) { optionLocator = "css=div[id$='__TAG_MENU|MENU'] div[id='message_removetag'] td[id$='_title']"; page = null; // FALL THROUGH } else { throw new HarnessException( "no logic defined for pulldown/option " + pulldown + "/" + option); } } else { throw new HarnessException("no logic defined for pulldown/option " + pulldown + "/" + option); } if (pulldownLocator != null) { this.zClickAt(pulldownLocator, ""); if (optionLocator != null) { this.zClickAt(optionLocator, ""); } } if (page != null) { page.zWaitForActive(); } return (page); }
/* (non-Javadoc) * @see framework.ui.AbsTree#zTreeItem(framework.ui.Action, framework.items.FolderItem) */ public AbsPage zTreeItem(Action action, IItem addressbook) throws HarnessException { tracer.trace("Click " + action + " on addressbook " + addressbook); // Validate the arguments if ((action == null) || (addressbook == null)) { throw new HarnessException("Must define an action and addressbook"); } FolderItem folder = null; TagItem tag = null; if (!(addressbook instanceof FolderItem)) { tag = (TagItem) addressbook; // throw new HarnessException("Must use FolderItem as argument, but was "+ // addressbook.getClass()); } else { folder = (FolderItem) addressbook; } AbsPage page = null; String locator = null; if (action == Action.A_LEFTCLICK) { // choose target addressbook to move contact to (done for TouchPad) locator = "css=div[id^='ext-tagview'] div[id^='ext-simplelistitem'] div[id^='ext-element']:contains('" + tag.getName() + "')"; page = null; } else if (action == Action.A_RIGHTCLICK) { locator = "id=zti__main_Contacts__" + folder.getId() + "_textCell"; if (!this.sIsElementPresent(locator)) { throw new HarnessException("Unable to locator folder in tree " + locator); } this.zRightClickAt(locator, ""); zWaitForBusyOverlay(); return (null); } else { throw new HarnessException("Action " + action + " not yet implemented"); } if (locator == null) { throw new HarnessException("no locator defined for action: " + action); } if (!this.sIsElementPresent(locator)) { throw new HarnessException("Unable to locator folder in tree " + locator); } // By default, left click at locator zClick(locator); zWaitForBusyOverlay(); if (page != null) { page.zWaitForActive(); } return (page); }
protected AbsPage zTreeItem(Action action, Button option, TagItem t) throws HarnessException { if ((action == null) || (option == null) || (t == null)) { throw new HarnessException("Must define an action, option, and addressbook"); } AbsPage page = null; String actionLocator = null; String optionLocator = "css=div[id^='ZmActionMenu_contacts_TAG'] "; tracer.trace("processing " + t.getName()); if (action == Action.A_LEFTCLICK) { throw new HarnessException("implement me!"); } else if (action == Action.A_RIGHTCLICK) { actionLocator = "css=td[id^='zti__main_Contacts__']:contains('" + t.getName() + "')"; this.zRightClickAt(actionLocator, ""); this.zWaitForBusyOverlay(); } else { throw new HarnessException("Action " + action + " not yet implemented"); } if (option == Button.B_TREE_NEWTAG) { // optionLocator = "//td[contains(@id,'_left_icon')]/div[contains(@class,'ImgNewTag')]"; // optionLocator="//div[contains(@id,'POPUP_DWT') and // contains(@class,'ZHasSubMenu')]//tbody/tr[@id='POPUP_NEW_TAG']"; // optionLocator = css=div[id='ZmActionMenu_conversationList_TAG'] div[id='NEW_TAG'] // td[id$='_title'] optionLocator += " div[id^='NEW_TAG'] td[id$='_title']"; page = new DialogTag(MyApplication, ((AppAjaxClient) MyApplication).zPageMail); } else if (option == Button.B_DELETE) { // optionLocator = Locators.zDeleteTreeMenuItem; optionLocator += " div[id^='DELETE_WITHOUT_SHORTCUT'] td[id$='_title']"; page = new DialogWarning( DialogWarning.DialogWarningID.DeleteTagWarningMessage, MyApplication, ((AppAjaxClient) MyApplication).zPageAddressbook); } else if (option == Button.B_RENAME) { // optionLocator = Locators.zRenameTreeMenuItem; optionLocator += " div[id^='RENAME_TAG'] td[id$='_title']"; page = new DialogRenameTag(MyApplication, ((AppAjaxClient) MyApplication).zPageAddressbook); } else { throw new HarnessException("button " + option + " not yet implemented"); } if (actionLocator == null) throw new HarnessException("locator is null for action " + action); if (optionLocator == null) throw new HarnessException("locator is null for option " + option); // Default behavior. Click the locator zClickAt(optionLocator, ""); // If there is a busy overlay, wait for that to finish this.zWaitForBusyOverlay(); if (page != null) { // Wait for the page to become active, if it was specified page.zWaitForActive(); } return (page); }
protected AbsPage zTreeItem(Action action, Button option, FolderItem folderItem) throws HarnessException { AbsPage page = null; String actionLocator = null; String optionLocator = null; if ((action == null) || (option == null) || (folderItem == null)) { throw new HarnessException("Must define an action, option, and addressbook"); } logger.info( myPageName() + " zTreeItem(" + action + ", " + option + "," + folderItem.getName() + ")"); tracer.trace(action + " then " + option + " on Folder Item = " + folderItem.getName()); if (folderItem.getName().equals("USER_ROOT")) { actionLocator = "css=div#ztih__main_Contacts__ADDRBOOK_div"; } else { actionLocator = "css=div#zti__main_Contacts__" + folderItem.getId() + "_div"; } if (action == Action.A_RIGHTCLICK) { if (option == Button.B_TREE_NEWFOLDER) { optionLocator = "css=div[id^='ZmActionMenu_contacts_ADDRBOOK'] div[id^='NEW_ADDRBOOK'] td[id$='_title']"; page = new DialogCreateFolder(MyApplication, ((AppAjaxClient) MyApplication).zPageAddressbook); } else if (option == Button.B_DELETE) { optionLocator = "css=div[id^='ZmActionMenu_contacts_ADDRBOOK'] div[id^='DELETE_WITHOUT_SHORTCUT'] td[id$='_title']"; page = null; } else if (option == Button.B_RENAME) { optionLocator = "css=div[id^='ZmActionMenu_contacts_ADDRBOOK'] div[id^='RENAME_FOLDER'] td[id$='_title']"; page = new DialogRenameFolder(MyApplication, ((AppAjaxClient) MyApplication).zPageAddressbook); } else if (option == Button.B_TREE_EDIT) { optionLocator = "css=div[id^='ZmActionMenu_contacts_ADDRBOOK'] div[id^='EDIT_PROPS'] td[id$='_title']"; page = new DialogEditFolder(MyApplication, ((AppAjaxClient) MyApplication).zPageAddressbook); } else if (option == Button.B_TREE_FOLDER_EMPTY) { optionLocator = "css=div[id^='ZmActionMenu_contacts_ADDRBOOK'] div[id^='EMPTY_FOLDER'] td[id$='_title']"; page = new DialogWarning( DialogWarning.DialogWarningID.EmptyFolderWarningMessage, MyApplication, ((AppAjaxClient) MyApplication).zPageAddressbook); } else if (option == Button.B_SHARE) { optionLocator = "css=div[id='ZmActionMenu_contacts_ADDRBOOK'] div[id='SHARE_ADDRBOOK'] td[id$='_title']"; page = new DialogShare(MyApplication, ((AppAjaxClient) MyApplication).zPageAddressbook); } else { throw new HarnessException("implement action:" + action + " option:" + option); } if (actionLocator != null) { zRightClickAt(actionLocator, "0,0"); zWaitForBusyOverlay(); } if (optionLocator != null) { zClickAt(optionLocator, "0,0"); zWaitForBusyOverlay(); } if (page != null) { page.zWaitForActive(); } return page; } else if (action == Action.A_LEFTCLICK) { if (option == Button.B_TREE_NEWFOLDER) { zClickAt("css=div[class^=ImgNewContactsFolder][class*=ZWidget]", "0,0"); page = new DialogCreateFolder(MyApplication, ((AppAjaxClient) MyApplication).zPageAddressbook); } else { throw new HarnessException("implement action:" + action + " option:" + option); } } else { throw new HarnessException("implement action:" + action + " option:" + option); } if (page != null) { page.zWaitForActive(); } return page; }
@Override public AbsPage zTreeItem(Action action, Button option, IItem item) throws HarnessException { // Validate the arguments if ((action == null) || (option == null) || (item == null)) { throw new HarnessException( "zTreeItem(Action, Button, IItem): Must define an action, option, and item"); } logger.info( myPageName() + " zTreeItem(" + action + ", " + option + ", " + item.getName() + ")"); tracer.trace("Click " + action + " then " + option + " on item " + item.getName()); AbsPage page = null; String actionLocator = null; String optionLocator = null; if (item instanceof TagItem) { actionLocator = "css=td[id^=zti__main_Briefcase__]:contains(" + ((TagItem) item).getName() + ")"; } else if (item instanceof FolderItem) { actionLocator = "css=td[id^=zti__main_Briefcase__" + ((FolderItem) item).getId() + "_textCell]"; } else { throw new HarnessException("Must use IItem as argument, but was " + item.getClass()); } zWaitForElementVisible(actionLocator); if (action == Action.A_RIGHTCLICK) { this.zRightClickAt(actionLocator, "0,0"); } else { throw new HarnessException("implement me! " + action + ": not implemented"); } if (option == Button.B_TREE_NEWTAG) { optionLocator = Locators.zNewTagTreeMenuItem; page = new DialogTag(MyApplication, ((AppAjaxClient) MyApplication).zPageBriefcase); } else if (option == Button.B_TREE_RENAMETAG) { optionLocator = Locators.zRenameTagTreeMenuItem; page = new DialogRenameTag(MyApplication, ((AppAjaxClient) MyApplication).zPageBriefcase); } else if (option == Button.B_TREE_DELETE) { optionLocator = Locators.zDeleteTreeMenuItem; if (item instanceof TagItem) { page = new DialogWarning( DialogWarning.DialogWarningID.DeleteTagWarningMessage, MyApplication, ((AppAjaxClient) MyApplication).zPageBriefcase); } } else if (option == Button.B_TREE_NEWFOLDER) { optionLocator = Locators.zNewFolderTreeMenuItem; page = new DialogCreateBriefcaseFolder( MyApplication, ((AppAjaxClient) MyApplication).zPageBriefcase); } else if (option == Button.B_TREE_EDIT_PROPERTIES) { optionLocator = Locators.zEditPropertiesTreeMenuItem; page = new DialogEditProperties(MyApplication, ((AppAjaxClient) MyApplication).zPageBriefcase); } else { throw new HarnessException("button " + option + " not yet implemented"); } this.zWaitForBusyOverlay(); zWaitForElementVisible(optionLocator); // Default behavior. Click the locator zClickAt(optionLocator, ""); // If there is a busy overlay, wait for that to finish this.zWaitForBusyOverlay(); if (page != null) { // Wait for the page to become active, if it was specified page.zWaitForActive(); } return (page); }
public AbsPage zPressPulldown(Button pulldown, Button option) throws HarnessException { logger.info(myPageName() + " zPressPulldown(" + pulldown + ", " + option + ")"); tracer.trace("Click " + pulldown + " then " + option); if (pulldown == null) throw new HarnessException("Pulldown cannot be null"); if (option == null) throw new HarnessException("Option cannot be null"); AbsPage page = null; String pulldownLocator = null; String optionLocator = null; if (pulldown == Button.B_TREE_FOLDERS_OPTIONS) { pulldownLocator = "css=div[id='ztih__main_Briefcase__BRIEFCASE_div'] td[id='ztih__main_Briefcase__BRIEFCASE_optCell'] div[class=ImgContextMenu]"; if (option == Button.B_TREE_NEWFOLDER) { optionLocator = "css=div[id='ZmActionMenu_briefcase_BRIEFCASE'] div[id='NEW_BRIEFCASE'] td[id$='_title']"; page = new DialogCreateBriefcaseFolder( MyApplication, ((AppAjaxClient) MyApplication).zPageBriefcase); } else { throw new HarnessException( "Pulldown/Option " + pulldown + "/" + option + " not implemented"); } // FALL THROUGH } else if (pulldown == Button.B_TREE_TAGS_OPTIONS) { pulldownLocator = "css=div[id='zov__main_Briefcase'] td[id='ztih__main_Briefcase__TAG_optCell'] div[class=ImgContextMenu]"; if (option == Button.B_TREE_NEWTAG) { optionLocator = "css=div[id='ZmActionMenu_briefcase_TAG'] div[id='NEW_TAG'] td[id$='_title']"; page = new DialogTag(MyApplication, ((AppAjaxClient) MyApplication).zPageBriefcase); } else { throw new HarnessException( "Pulldown/Option " + pulldown + "/" + option + " not implemented"); } // FALL THROUGH } else { throw new HarnessException("Pulldown/Option " + pulldown + "/" + option + " not implemented"); } // Default behavior if (pulldownLocator != null) { // Make sure the locator exists if (!this.sIsElementPresent(pulldownLocator)) { throw new HarnessException( "Button " + pulldown + " option " + option + " pulldownLocator " + pulldownLocator + " not present!"); } // 8.0 change ... need zClickAt() // this.zClick(pulldownLocator); this.zClickAt(pulldownLocator, "0,0"); // If the app is busy, wait for it to become active zWaitForBusyOverlay(); if (optionLocator != null) { // Make sure the locator exists if (!this.sIsElementPresent(optionLocator)) { throw new HarnessException( "Button " + pulldown + " option " + option + " optionLocator " + optionLocator + " not present!"); } // 8.0 change ... need zClickAt() // this.zClick(optionLocator); this.zClickAt(optionLocator, "0,0"); // If the app is busy, wait for it to become active zWaitForBusyOverlay(); } // If we click on pulldown/option and the page is specified, then // wait for the page to go active if (page != null) { page.zWaitForActive(); } } // Return the specified page, or null if not set return (page); }
@Override public AbsPage zPressButton(Button button) throws HarnessException { tracer.trace("Click " + button); if (button == null) throw new HarnessException("Button cannot be null"); AbsPage page = null; String locator = null; if (button == Button.B_TREE_NEWBRIEFCASE) { locator = "css=div[id=ztih__main_Briefcase__BRIEFCASE] div[class^=ImgNewFolder ZWidget]"; page = new DialogCreateBriefcaseFolder( MyApplication, ((AppAjaxClient) MyApplication).zPageBriefcase); if (!this.sIsElementPresent(locator)) { throw new HarnessException("Unable to locate folder in the tree " + locator); } this.zClickAt(locator, "0,0"); zWaitForBusyOverlay(); return page; } else if (button == Button.B_TREE_NEWTAG) { locator = "css=div[class^=ImgNewTag ZWidget]"; if (!this.sIsElementPresent(locator)) { throw new HarnessException("Unable to locate folder in tree " + locator); } page = new DialogTag(MyApplication, ((AppAjaxClient) MyApplication).zPageBriefcase); } else if (button == Button.B_TREE_BRIEFCASE_EXPANDCOLLAPSE) { locator = null; page = null; // TODO: implement me // FALL THROUGH } else { throw new HarnessException("no logic defined for button " + button); } if (locator == null) { throw new HarnessException("locator was null for button " + button); } // Default behavior, process the locator by clicking on it // // Click it this.zClickAt(locator, "0,0"); // If the app is busy, wait for that to finish zWaitForBusyOverlay(); // If page was specified, make sure it is active if (page != null) { // This function (default) throws an exception if never active page.zWaitForActive(); } return (page); }