コード例 #1
0
        public void GivenEditAGeneralCorresopndenceDescription(String correspondenceName, Table correspondenceTable)
        {
            try
            {
                TableRow CorrespondenceRow = correspondenceTable.Rows[0];
                correspondenceName += uniqueStamp;   //The unique stamp is a series of numbers to keep names different from each other

                if (CorrespondenceRow.Keys.Contains("Name") && (!String.IsNullOrEmpty(CorrespondenceRow["Name"])))
                {
                    CorrespondenceRow["Name"] += uniqueStamp;
                }
                BBCRMHomePage.OpenMarketingAndCommunicationsFA();  //Open marketing functional area

                string xPathLink = "//div[contains(@class,'bbui-pages-contentcontainer') and not(contains(@class,'x-hide-display'))]//button[contains(@class,'bui-linkbutton')]/div[text()='Manage correspondence']";
                Panel.WaitClick(xPathLink, 50);                                                                                                            // click on the General correspondence link}

                Panel.SelectSectionDatalistRow(CorrespondenceRow, "UNC Correspondence processes");                                                         //find the correct row which has the correct general correspondence process
                Panel.WaitClick(Panel.getXSelectedDatalistRowButton("Edit"));
                Dialog.SetTextField("//input[contains(@id,'_DESCRIPTION_value')]", "Test Desc Edited Now");                                                //change the desc.
                Dialog.SetTextField("//textarea[contains(@id,'_COMMENTS_value')]", "This is an edited comment for " + DateTime.Today.ToShortDateString()); //change the comment
            }
            catch (Exception ex)
            {
                if (UserName != "bbtest2.gst")
                {
                    throw new Exception("Error: could not edit a general correspondence. " + ex.Message);
                }
            }
        }
コード例 #2
0
        public void WhenISearchForAExclusionSelection(string selection)
        {
            IWebElement statusElement = null;

            try
            {
                BBCRMHomePage.OpenMarketingAndCommunicationsFA(); //Open marketing functional area
                string xPathLink = "//div[contains(@class,'bbui-pages-contentcontainer') and not(contains(@class,'x-hide-display'))]//button[contains(@class,'bui-linkbutton')]/div[text()='Selections']";
                Panel.WaitClick(xPathLink, 20);                   // click on the selections link
                xPathLink = "//button[contains(@class,'bui-linkbutton')]/div[text()='Selection search']";
                Panel.WaitClick(xPathLink, 20);                   // click on the selection search link
                string xSearchPath = "//*[contains(@class,'bbui-dialog-search') and not(contains(@style,'hidden'))]//*[starts-with(@id, 'ctrl_') and contains(@id, '_NAME_value')]";
                Dialog.SetTextField(xSearchPath, selection);
                Dialog.ClickButton("Search", 30);

                string xPath = "//div[contains(@class,'x-grid-empty')and text()='No records found']";
                // use x-grid-empty class to see if there was a result.
                statusElement = Panel.GetDisplayedElement(xPath, 15);
                Dialog.Cancel();
            }

            catch (Exception ex)
            {
                if (statusElement != null)
                {
                    throw new Exception("Error: Could not search for an exclusion. " + ex.Message);
                }
                else
                {
                    throw new Exception("Error: the exclusion already exists. " + ex.Message);
                }
            }
        }
コード例 #3
0
        public void ThenAppealMailingsTabAppealMailingListShows(string Appeal, Table table)
        {
            //Verify Appeal Mailing data displays correctly on Appeal
            //select M&C
            BBCRMHomePage.OpenMarketingAndCommunicationsFA();
            //Open Appeal Search
            MarketingAndCommFunctionalArea.OpenLink("Appeal", "Appeal search");
            //search for Appeal in Name field
            Dialog.SetTextField("//input[contains(@id,'_NAME_value')]", Appeal + uniqueStamp);
            //click Search button
            Dialog.ClickButton("Search");
            //Select correct result in grid
            SearchDialog.SelectFirstResult();
            //select Mailings tab
            Panel.SelectTab("Mailings");
            //set data to match data list
            TableRow tableRow = table.Rows[0];

            tableRow["Name"]      += uniqueStamp;
            tableRow["Package"]   += uniqueStamp;
            tableRow["Selection"] += uniqueStamp + " (Ad-hoc Query)";
            StepHelper.SetTodayDateInTableRow("Mail date", tableRow);
            if ((Panel.SectionDatalistRowExists(table.Rows[0], "Appeal mailings") == false))
            {
                throw new Exception("ThenAppealMailingsTabAppealMailingListShows grid not correct!");
            }
        }
コード例 #4
0
        public void GivenSegmentDoesNotExistWithActivatedMarketingEffortUsingPackage(string segmentName, string template)
        {
            BBCRMHomePage.OpenMarketingAndCommunicationsFA();
            MarketingAndCommFunctionalArea.Segments();

            IDictionary <string, string> segmentRow = new Dictionary <string, string> {
                { "Segment", segmentName }
            };

            if (SegmentsPanel.SegmentExists(segmentRow))
            {
                SegmentsPanel.GoToSegment(segmentRow);
            }
            else
            {
                return;
            }

            IDictionary <string, string> effort = new Dictionary <string, string> {
                { "Marketing effort", template }
            };

            if (SegmentPanel.ActivatedMarketingEffortExists(effort))
            {
                SegmentPanel.DeleteActivatedMarketingEffort(template);
                BBCRMHomePage.OpenMarketingAndCommunicationsFA();
                MarketingAndCommFunctionalArea.Segments();
                SegmentsPanel.GoToSegment(segmentRow);
            }
            SegmentPanel.DeleteSegment();
        }
コード例 #5
0
        public void GivenAMailPackageExistsWith(Table packages)
        {
            foreach (var package in packages.Rows)
            {
                BBCRMHomePage.OpenMarketingAndCommunicationsFA();
                MarketingAndCommFunctionalArea.Packages();

                IDictionary <string, string> packageRow = new Dictionary <string, string> {
                    { "Channel", "Mail" }
                };
                if (package.ContainsKey("Name") && package["Name"] != string.Empty)
                {
                    packageRow.Add("Name", package["Name"]);
                }
                if (package.ContainsKey("Letter") && package["Letter"] != string.Empty)
                {
                    packageRow.Add("Content", package["Letter"]);
                }
                if (PackagesPanel.PackageExists(packageRow))
                {
                    PackagesPanel.DeletePackage(packageRow);
                }

                PackagesPanel.AddMailPackage();
                PackageDialog.SetFields(package);
                Dialog.Save();
            }
        }
コード例 #6
0
        public void WhenICreateAMarketingEffort(string marketingName)
        {
            try
            {
                marketingName += uniqueStamp;                            //The unique stamp is a series of numbers to keep names different from each other
                BBCRMHomePage.OpenMarketingAndCommunicationsFA();        //Open marketing functional area
                string xPathLink = "//div[contains(@class,'bbui-pages-contentcontainer') and not(contains(@class,'x-hide-display'))]//button[contains(@class,'bui-linkbutton')]/div[text()='Direct marketing efforts']";
                Panel.WaitClick(xPathLink, 50);                          // click on the Direct Marketing Efforts link
                Panel.ClickSectionAddButton("Direct marketing efforts"); // click on Direct marketing effots link
                string xPath = "//div[contains(@id,'_TEMPLATES_value')]//div[text()='ACK FYXX E-Mail Marketing Effort Template']";
                Dialog.WaitClick(xPath, 45);                             // select the template: 'ACK FYXX E-Mail Marketing Effort Template'
                Dialog.ClickButton("Next", 30);

                //input values into the create effort fields
                Dialog.SetTextField("//input[contains(@id,'_FREEFORMPART_value')]", marketingName);
                Dialog.SetTextField("//textarea[contains(@id,'_EFFORTDESCRIPTION_value')]", "Test Desc");
                Dialog.SetTextField("//input[contains(@id,'EFFORTSITEID_value')]", "Ackland Art Museum");
                Dialog.SetSearchList(Dialog.getXInput("_CREATEEFFORTTAB_caption_tab", "_INDIVIDUALAPPEAL_value"), Dialog.getXInput("_AppealSearch", "_NAME_value"), "17Y - 1/12 Appeal Former Charlotte");
                Dialog.SetTextField("//input[contains(@id,'_EFFORTLAUNCHDATE_value')]", "11/17/2017");

                Dialog.Save(); // Save the fields
            }
            catch (Exception exc)
            {
                throw new Exception("Error: could not create a marketing effort. " + exc.ToString());
            }
        }
コード例 #7
0
        public void GivenMarketingExportDefinitionsExists(string ExportName)
        {
            //in this instance we cannot use the default XpathHelper one
            var visibleDialog = "//div[contains(@class,'x-window x-resizable-pinned') and contains(@style,'visible')]";

            ExportName += uniqueStamp;
            //navigate
            BBCRMHomePage.OpenMarketingAndCommunicationsFA();
            MarketingAndCommFunctionalArea.OpenLink("Packages", "Export definitions");
            BaseComponent.GetEnabledElement(
                "//div[contains(@class,'xtb-text bbui-pages-section-tbarcaption') and ./text()='Marketing export definitions']");
            //click Add
            Panel.ClickSectionAddButton("Marketing export definitions");
            BaseComponent.WaitClick(
                "//div[contains(@class, 'x-menu x-menu-floating x-layer') and contains(@style, 'visible')]//span[./text()='Direct marketing']");
            //click save tab
            Dialog.WaitClick("//span[contains(@class,'x-tab-strip-text') and ./text()='Set save options']");
            //set name field
            ExportDefinitionDialog.SetTextField(visibleDialog + "//input[contains(@id,'_NAME_value')]", ExportName);
            //give the "save and close" button validation time to catch up
            ExportDefinitionDialog.SetTextField(visibleDialog + "//textarea[contains(@id,'_DESCRIPTION_value')]", ExportName);
            ExportDefinitionDialog.SetTextField(visibleDialog + "//textarea[contains(@id,'_DESCRIPTION_value')]", ExportName);
            ExportDefinitionDialog.SetTextField(visibleDialog + "//textarea[contains(@id,'_DESCRIPTION_value')]", ExportName);
            ExportDefinitionDialog.SaveAndClose();
        }
コード例 #8
0
        public void WhenIAddSelectionAd_HocQueryType(string selection)
        {
            try
            {
                BBCRMHomePage.OpenMarketingAndCommunicationsFA(); //open the analysis functional area
                string xPathLink = "//div[contains(@class,'bbui-pages-contentcontainer') and not(contains(@class,'x-hide-display'))]//button[contains(@class,'bui-linkbutton')]/div[text()='Selections']";
                Panel.WaitClick(xPathLink, 20);                   // click on the selections link

                xPathLink = "//button[contains(@class,'bui-linkbutton')]/div[text()='Add a selection']";
                Panel.WaitClick(xPathLink, 20);  // click on the selections link

                //string querystring = "//button[./text() = 'Add an ad-hoc query']";

                //Panel.WaitClick(querystring, 10); //click on the "ad-hoc query" button
                string queryType = "Constituent";
                Dialog.SetDropDown(Dialog.getXInput("AdHocQueryNewForm", "RECORDTYPE_value"), queryType); //start the adhoc query for the selected querytype
                string gridRowXPath = "";
                gridRowXPath = "//div[contains(@id,'AdHocQueryNewForm')]//div[contains(@id, 'GROUPTYPE-Constituent-bd')]/div[3]/table";

                Panel.WaitClick(gridRowXPath, 20); //click on that row
                Panel.WaitClick(Dialog.getXOKButton, 20);
            }
            catch (Exception ex)
            {
                throw new Exception("Error: could not add an adhoc query. " + ex.Message);
            }
        }
コード例 #9
0
        public void GivenAddAConstituentSegment(string segmentName)
        {
            segmentName += uniqueStamp;                       //The unique stamp is a series of numbers to keep names different from each other
            BBCRMHomePage.OpenMarketingAndCommunicationsFA(); //Open marketing functional area
            string xPathLink = "//div[contains(@class,'bbui-pages-contentcontainer') and not(contains(@class,'x-hide-display'))]//button[contains(@class,'bui-linkbutton')]/div[text()='Segments']";

            Panel.WaitClick(xPathLink, 50);                       // click on the Segments link
            Panel.ClickSectionAddButton("Segments");              //click on the Segments link
            Panel.WaitClick(getXMenuItem("Constituent segment")); //add a new Constituent segment
            AddSegment(segmentName);
        }
コード例 #10
0
 public void GivenAppealExists(string AppealName)
 {
     AppealName += uniqueStamp;
     //Navigate to Marketing and Communication
     BBCRMHomePage.OpenMarketingAndCommunicationsFA();
     //Add Appeal
     MarketingAndCommFunctionalArea.OpenLink("Appeal", "Add an appeal");
     Dialog.SetTextField(Dialog.getXInput("AppealAddForm", "NAME"), AppealName);
     Dialog.SetTextField(Dialog.getXTextArea("AppealAddForm", "DESCRIPTION"), AppealName);
     Dialog.Save();
 }
コード例 #11
0
 public void ThenAMarketingAcknowledgementTemplateExists(Table templates)
 {
     BBCRMHomePage.OpenMarketingAndCommunicationsFA();
     MarketingAndCommFunctionalArea.MarketingAcknowledgements();
     foreach (var template in templates.Rows)
     {
         if (!MarketingAcknowledgementsPanel.TemplateExists(template))
         {
             throw new ArgumentException(String.Format("Template '{0}' does not exist.", template.Values));
         }
     }
 }
コード例 #12
0
 public void GivenSegmentExistsWithSelection(string segmentType, string selection, Table detailsFields)
 {
     BBCRMHomePage.OpenMarketingAndCommunicationsFA();
     MarketingAndCommFunctionalArea.Segments();
     SegmentsPanel.AddSegment(segmentType);
     foreach (var detailsFieldRow in detailsFields.Rows)
     {
         SegmentDialog.SetDetailsFields(detailsFieldRow);
     }
     SegmentDialog.AddSelection(selection);
     Dialog.Save();
 }
コード例 #13
0
 public void GivenMarketingAcknowledgementTemplateDoesNotExist(Table templates)
 {
     BBCRMHomePage.OpenMarketingAndCommunicationsFA();
     MarketingAndCommFunctionalArea.MarketingAcknowledgements();
     foreach (var template in templates.Rows)
     {
         if (MarketingAcknowledgementsPanel.TemplateExists(template))
         {
             MarketingAcknowledgementsPanel.DeleteTemplate(template);
         }
     }
 }
コード例 #14
0
 public void WhenICreateAReceiptProcess(Table receipts)
 {
     foreach (var receipt in receipts.Rows)
     {
         BBCRMHomePage.OpenMarketingAndCommunicationsFA();
         MarketingAndCommFunctionalArea.Receipts();
         if (receipt.ContainsKey("Name") && !string.IsNullOrEmpty(receipt["Name"]))
         {
             receipt["Name"] += uniqueStamp;
         }
         ReceiptsPanel.AddReceipt(receipt);
     }
 }
コード例 #15
0
 public void GivenStartTheReminderProcess()
 {
     BBCRMHomePage.OpenMarketingAndCommunicationsFA(); // open the marketing & commun. functional area
     //click on the reminders link
     try
     {
         Panel.WaitClick("//button[contains(@class,'bbui-linkbutton bbui-pages-task-link')]/div[text()='Reminders']", 20);
         Panel.OpenTab("Reminders");
     }
     catch (Exception ex)
     {
         throw new Exception("Error: could not start the reminder process. " + ex.Message);
     }
 }
コード例 #16
0
 public void GivenPackageExists(Table packages)
 {
     foreach (var package in packages.Rows)
     {
         BBCRMHomePage.OpenMarketingAndCommunicationsFA();
         MarketingAndCommFunctionalArea.Packages();
         if (PackagesPanel.PackageExists(package))
         {
             continue;
         }
         PackagesPanel.AddMailPackage();
         PackageDialog.SetFields(package);
     }
 }
コード例 #17
0
 public void GivenCreateAnEmailPackage(string emailPackageName)
 {
     try
     {
         BBCRMHomePage.OpenMarketingAndCommunicationsFA();                                                        //Open marketing functional area
         Dialog.WaitClick("//button[contains(@class,'bbui-linkbutton')]/div[text()='Packages']", 30);             // start the assign letters process
         Dialog.WaitClick("//button[contains(@class,'bbui-linkbutton')]/div[text()='Add an email package']", 30); // start the assign letters process
         AddEmailPackage(emailPackageName);
         System.Threading.Thread.Sleep(9000);                                                                     //allow some time for the process to actually run.
     }
     catch (Exception exc)
     {
         throw new Exception("Error: could not create an email package. " + exc.Message);
     }
 }
コード例 #18
0
 public void WhenRunReceiptProcess(Table receiptProcesses)
 {
     foreach (var receiptProcess in receiptProcesses.Rows)
     {
         BBCRMHomePage.OpenMarketingAndCommunicationsFA();
         MarketingAndCommFunctionalArea.Receipts();
         if (receiptProcess.ContainsKey("Name") && !string.IsNullOrEmpty(receiptProcess["Name"]))
         {
             receiptProcess["Name"] += uniqueStamp;
         }
         ReceiptsPanel.RunReceiptProcess(receiptProcess);
         if (!ReceiptBusinessProcess.IsCompleted())
         {
             throw new Exception("Process ran with exceptions or errors.");
         }
     }
 }
コード例 #19
0
        public void GivenSetupAnAcknowledgement(string processName)
        {
            try
            {
                BBCRMHomePage.OpenMarketingAndCommunicationsFA(); //Open marketing functional area
                string xPathLink = "//div[contains(@class,'bbui-pages-contentcontainer') and not(contains(@class,'x-hide-display'))]//button[contains(@class,'bui-linkbutton')]/div[text()='Acknowledgements']";
                Panel.WaitClick(xPathLink, 50);                   // click on the Acknowledgements link
                Panel.SelectTab("Letters");                       //select Letters tab

                string xPath = "//div[contains (@title, '" + processName + "')]/a[./text()='" + processName + "']";
                Panel.WaitClick(xPath, 15);  // click on the selected anchor link according to the xPath above.
            }
            catch (Exception ex)
            {
                throw new Exception("Error: could not setup an acknowledgement. " + ex.Message);
            }
        }
コード例 #20
0
        public void GivenSetupAGeneralCorrespondence(string correspondenceName)
        {
            try
            {
                int    rowCount = 1;
                string formName = "_BusinessProcessCommPrefForm";
                correspondenceName += uniqueStamp;                //The unique stamp is a series of numbers to keep names different from each other
                BBCRMHomePage.OpenMarketingAndCommunicationsFA(); //Open marketing functional area

                string xPathLink = "//div[contains(@class,'bbui-pages-contentcontainer') and not(contains(@class,'x-hide-display'))]//button[contains(@class,'bui-linkbutton')]/div[text()='Manage correspondence']";
                Panel.WaitClick(xPathLink, 50);  // click on the General correspondence link}

                // set fields on the add correspondence dialog box
                Panel.ClickSectionAddButton("UNC Correspondence processes");

                Dialog.SetTextField("//input[contains(@id,'_NAME_value')]", correspondenceName);
                Dialog.SetTextField("//input[contains(@id,'_DESCRIPTION_value')]", "Test Desc");
                Dialog.SetDropDown("//input[contains(@id,'_OUTPUTTYPE_value')]", "Export definition");

                Dialog.SetSearchList(Dialog.getXInput("_CorrespondenceProcessAddForm3", "_EXPORTDEFINITIONID_value"), Dialog.getXInput("_ExportDefinitionSearch2", "_NAME_value"), "UDO FYXX Special Events Export Definition");
                Dialog.SetSearchList(Dialog.getXInput("_CorrespondenceProcessAddForm3", "_IDSETREGISTERID_value"), Dialog.getXInput("_SelectionSearch", "_NAME_value"), "UDO FY17 McCleery Prospects");

                Dialog.SetCheckbox("//input[contains(@id,'_UPDATECONSTITUENTRECORD_value')]", true);
                Dialog.SetDropDown("//input[contains(@id,'_CORRESPONDENCECODEID_value')]", "UDO-General Correspondence");
                Dialog.SetTextField("//textarea[contains(@id,'_COMMENTS_value')]", "This is a general correspondence comment for " + DateTime.Today.ToShortDateString());

                //ad exclusions
                Dialog.ClickButton("Exclusions", 50);
                string gridXPath = Dialog.getXGridCell("dataformdialog_", formName, rowCount, 3);
                Dialog.SetGridDropDown(gridXPath, "UDO-No Email Events - University Development Office");
                rowCount++;
                gridXPath = Dialog.getXGridCell("dataformdialog_", formName, rowCount, 3);
                Dialog.SetGridDropDown(gridXPath, "UDO-No Email Solicitations - University Development Office");


                Dialog.OK();
                Dialog.Save();  // save the input
            }
            catch (Exception ex)
            {
                if (UserName != "bbtest2.gst")
                {
                    throw new Exception("Error: could not set up a general correspondence. " + ex.Message);
                }
            }
        }
コード例 #21
0
 public void WhenICreateAReceiptProcess(Table receipts)
 {
     try
     {
         foreach (var receipt in receipts.Rows)
         {
             BBCRMHomePage.OpenMarketingAndCommunicationsFA(); //Open marketing functional area
             MarketingAndCommFunctionalArea.Receipts();        // Open receipts area
             if (receipt.ContainsKey("Name") && !string.IsNullOrEmpty(receipt["Name"]))
             {
                 receipt["Name"] += uniqueStamp;
             }
             ReceiptsPanel.AddReceipt(receipt);  // add a receipt
         }
     }
     catch (Exception ex)
     {
         throw new Exception("Error: could not create a receipt process. " + ex.Message);
     }
 }
コード例 #22
0
        public void WhenISearchForAMarketingSelection(string selection)
        {
            try
            {
                BBCRMHomePage.OpenMarketingAndCommunicationsFA(); //Open marketing functional area
                string xPathLink = "//div[contains(@class,'bbui-pages-contentcontainer') and not(contains(@class,'x-hide-display'))]//button[contains(@class,'bui-linkbutton')]/div[text()='Selections']";
                Panel.WaitClick(xPathLink, 20);                   // click on the selections link
                xPathLink = "//button[contains(@class,'bui-linkbutton')]/div[text()='Selection search']";
                Panel.WaitClick(xPathLink, 20);                   // click on the selection search link
                string xSearchPath = "//*[contains(@class,'bbui-dialog-search') and not(contains(@style,'hidden'))]//*[starts-with(@id, 'ctrl_') and contains(@id, '_NAME_value')]";
                Dialog.SetTextField(xSearchPath, selection);
                Dialog.ClickButton("Search", 30);
                SearchDialog.SelectFirstResult();
                //save the selection
                Dialog.Save();
            }

            catch (Exception ex)
            {
                throw new Exception("Error: could not find the selection " + ex.Message);
            }
        }
コード例 #23
0
        public void GivenIAddAnAppealMailing(Table table)
        {
            //setup date field.  StepHelper for date must come before dynamic objects
            StepHelper.SetTodayDateInTableRow("Mail date", table);
            dynamic objectData = table.CreateDynamicInstance();
            //sorts out date format due to datetime adding 00:00:00
            DateTime findDate = objectData.MailDate;

            //Naviate to Appeal Mailings
            BBCRMHomePage.OpenMarketingAndCommunicationsFA();
            FunctionalArea.OpenLink("Appeal mailings");
            //Click Add button
            Panel.WaitClick(@"//td[contains(@class,'x-toolbar-cell') and not (contains(@class,'x-hide-display'))]//button[text()='Add']");
            //Populate Add appeal mailing form using Dialog.SetField
            Dialog.SetTextField("//input[contains(@id,'_NAME_value')]", objectData.Name + uniqueStamp);
            //need to convert date to a string
            Dialog.SetTextField("//input[contains(@id,'_MAILDATE_value')]", findDate.ToShortDateString());
            Dialog.SetTextField("//input[contains(@id,'_APPEALID_value')]", objectData.Appeal + uniqueStamp);
            //need to appeand (Ad-hoc Query) string in order to match on input
            Dialog.SetTextField("//input[contains(@id,'_IDSETREGISTERID_value')]", objectData.Selection + uniqueStamp + " (Ad-hoc Query)");
            Dialog.SetTextField("//input[contains(@id,'_MKTPACKAGEID_value')]", objectData.Package + uniqueStamp);
            Dialog.Save();
        }
コード例 #24
0
 public void WhenIStartToAddAMarketingAcknowledgementTemplate()
 {
     BBCRMHomePage.OpenMarketingAndCommunicationsFA();
     MarketingAndCommFunctionalArea.MarketingAcknowledgements();
     MarketingAcknowledgementsPanel.AddTemplate();
 }
コード例 #25
0
 private void NavMailPackage()
 {
     BBCRMHomePage.OpenMarketingAndCommunicationsFA();
     MarketingAndCommFunctionalArea.OpenLink("Packages", "Packages");
     BaseComponent.WaitClick(XpathHelper.xPath.VisiblePanel + "//button/div[./text()='Add a mail package']");
 }