Пример #1
0
        public void Run()
        {
            Mouse.DefaultMoveTime        = 300;
            Keyboard.DefaultKeyPressTime = 100;
            Delay.SpeedFactor            = 1.0;

            Ranorex.Unknown element = null;

            RanorexRepository   repo              = new RanorexRepository();
            fnWriteToLogFile    WriteToLogFile    = new fnWriteToLogFile();
            fnTimeMinusOverhead TimeMinusOverhead = new fnTimeMinusOverhead();
            fnDumpStatsQ4       DumpStatsQ4       = new fnDumpStatsQ4();
            fnWriteToErrorFile  WriteToErrorFile  = new fnWriteToErrorFile();

            // Create new stopwatch
            Stopwatch MystopwatchTT = new Stopwatch();

            MystopwatchTT.Reset();
            MystopwatchTT.Start();

            Stopwatch MystopwatchTotal = new Stopwatch();

            MystopwatchTotal.Reset();
            MystopwatchTotal.Start();
            Stopwatch MystopwatchQ4          = new Stopwatch();
            Stopwatch MystopwatchModuleTotal = new Stopwatch();
            Stopwatch MystopwatchF1          = new Stopwatch();
            Stopwatch MystopwatchTrade       = new Stopwatch();

            Global.LogFileIndentLevel++;
            Global.LogText = "IN fnCheckout";
            WriteToLogFile.Run();

            MystopwatchModuleTotal.Reset();
            MystopwatchModuleTotal.Start();

            // Click on CheckOut F12 button
            Global.LogText = @"Clicking on F12 Checkout";
            WriteToLogFile.Run();

            MystopwatchQ4.Reset();
            MystopwatchQ4.Start();

            if (Global.DomesticRegister)
            {
//				while(!repo.Retech.ButtonCheckout.Enabled)   // change 1/8/18
//				while( !Host.Local.TryFindSingle(repo.Retech.ButtonCheckoutInfo.AbsolutePath.ToString(), out element) )
                while (!Host.Local.TryFindSingle(repo.Retech.DataContextShowCheckoutViewCommandInfo.AbsolutePath.ToString(), out element))
                {
                    if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element))
                    {
                        repo.ContinueButtonCommand.Click();
                        Global.LogText = @"Clicked on Continue Button - 1 in fnCheckout()";
                        WriteToLogFile.Run();
                    }
                    Thread.Sleep(100);
                }
//				Keyboard.Press("{F12}");
// Try fix 1/31/18
                while (!Host.Local.TryFindSingle(repo.Retech.RequestCashSettlementInfo.AbsolutePath.ToString(), out element))
                {
                    // 07-25-18 check for "Pick Up At Store Requests" pop-up
                    if (!Host.Local.TryFindSingle(repo.PickupAtStorePopupNotifier.PickupAtStoreRequestPopUpInfo.AbsolutePath.ToString(), out element))
                    {
                        Thread.Sleep(10);
                    }
                    else
                    {
                        Report.Log(ReportLevel.Info, "Mouse", "Mouse Left Down item 'PopupNotifierView' at 434;30.", repo.PickupAtStorePopupNotifier.SelfInfo, new RecordItemIndex(0));
                        repo.PickupAtStorePopupNotifier.Self.MoveTo("434;30");
                        Keyboard.Press("{ENTER}");
                        //Mouse.ButtonDown(System.Windows.Forms.MouseButtons.Left);
                        Delay.Milliseconds(200);
                        // repo.PopupNotifierView.Self.Click();
                        Thread.Sleep(100);
                    }

                    if (Host.Local.TryFindSingle(repo.Retech.NotInterestedCommandInfo.AbsolutePath.ToString(), out element))
                    {
                        repo.Retech.NotInterestedCommand.Click();
                        Thread.Sleep(100);
                    }



                    if (repo.Retech.DataContextShowCheckoutViewCommand.Enabled)
                    {
                        repo.Retech.DataContextShowCheckoutViewCommand.Click();
                    }
                    Thread.Sleep(300);
                    if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element))
                    {
                        repo.ContinueButtonCommand.Click();
                        Global.LogText = @"Clicked on Continue Button - 1 in fnCheckout()";
                        WriteToLogFile.Run();
                    }
                    Thread.Sleep(100);
                }
//				repo.Retech.DataContextShowCheckoutViewCommand.Click();
            }
            else
            {
//				while(!repo.IPOS20167172.Self.Enabled)
//					{ Thread.Sleep(100); }
//				repo.IPOS20167172.Self.PressKeys("{F12}");
                if (repo.IPOS34069.F12TotalInfo.Exists(5000))                  // 02-08-18
                {
                }
                repo.IPOS34069.F12Total.PressKeys("{F12}");                  // 02-08-18

                if (Global.CurrentScenario == 47)
                {
                    while (!repo.CustomerLookupPhone_Number.Enabled)
                    {
                        Thread.Sleep(100);
                    }

                    MystopwatchQ4.Start();
                    MystopwatchQ4.Reset();
//					repo.CustomerLookupScreen.EdgePowerUpNumber.PressKeys("6364916031910400011");
                    repo.CustomerLookupPhone_Number.PressKeys("9727651234");
                    repo.CustomerLookupScreen.BtnSearch.Click();
                    while (!repo.CustomerLookupSelectF5.Enabled)
                    {
                        Thread.Sleep(100);
                    }
                    repo.CustomerLookupSelectF5.Click();
                    TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);                       // Subtract overhead and store in Global.Q4StatLine
                    Global.CurrentMetricDesciption = @"Search for Customer";
                    Global.Module = "Finalize";
                    DumpStatsQ4.Run();

                    MystopwatchQ4.Reset();
                    MystopwatchQ4.Start();

                    repo.TransactionCustomerInformation.Email.Click("160;2");
                    Delay.Milliseconds(200);

                    repo.TransactionCustomerInformation.Email.PressKeys("301 My Street");
                    Delay.Milliseconds(0);

                    repo.TransactionCustomerInformation.LastName.Click("114;1");
                    Delay.Milliseconds(200);

                    repo.TransactionCustomerInformation.LastName.PressKeys("9727651234");
                    Delay.Milliseconds(0);

                    repo.TransactionCustomerInformation.Address1.Click("41;6");
                    Delay.Milliseconds(200);

                    repo.TransactionCustomerInformation.Address1.PressKeys("My City");
                    Delay.Milliseconds(0);

                    repo.TransactionCustomerInformation.Open.Click();
                    Delay.Milliseconds(200);

                    repo.TransactionCustomerInformation.Open.Click();
                    Delay.Milliseconds(200);

                    repo.ListItemsValues.ListItemAB.Click();
                    Delay.Milliseconds(200);

                    repo.TransactionCustomerInformation.BtnAcceptButton.Click("23;27");
                    Delay.Milliseconds(200);

                    repo.PopUpCustomerLookupUnavailable.OKF5.Click("17;22");
                    Delay.Milliseconds(200);

                    TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);                       // Subtract overhead and store in Global.Q4StatLine
                    Global.CurrentMetricDesciption = @"Enter Customer Information";
                    Global.Module = "Finalize";
                    DumpStatsQ4.Run();
                }
            }

            Thread.Sleep(1000);

            // Check for Please select a charity to donate
            if (Host.Local.TryFindSingle(repo.RetechPeripheralHostWindow.PleaseSelectACharityToDonateInfo.AbsolutePath.ToString(), out element))
            {
                repo.RetechPeripheralHostWindow.DeclineDonateNoThanks.Click();
                Thread.Sleep(100);
            }

            if (Global.DomesticRegister)
            {
                Global.LogText = @"Waiting on Time to Check Out - in fnCheckout()";
                WriteToLogFile.Run();
                Thread.Sleep(300);
                while (!Host.Local.TryFindSingle(repo.Retech.TimeToCheckOutInfo.AbsolutePath.ToString(), out element))
                {
                    if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element))
                    {
                        repo.ContinueButtonCommand.Click();
                        Global.LogText = @"Clicked on Continue Button - 2 in fnCheckout()";
                        WriteToLogFile.Run();
                        Thread.Sleep(100);
                    }
                    Thread.Sleep(100);

                    if (Host.Local.TryFindSingle(repo.Retech.AcknowledgeRelatedProductsCommandInfo.AbsolutePath.ToString(), out element))
                    {
                        if (Host.Local.TryFindSingle(repo.Retech.AcknowledgeRelatedProductsCommandInfo.AbsolutePath.ToString(), out element))
                        {
                            if (repo.Retech.AcknowledgeRelatedProductsCommand.Enabled)
                            {
                                Global.LogText = @"Clicking on acknowledge related products before F12";
                                WriteToLogFile.Run();
                                repo.Retech.AcknowledgeRelatedProductsCommand.Click();
                                Thread.Sleep(100);
                            }
                        }
                    }
                    else if (Host.Local.TryFindSingle(repo.Retech.ContinueF5_5_6_0_103Info.AbsolutePath.ToString(), out element))
                    {
                        if (repo.Retech.ContinueF5_5_6_0_103.Enabled)
                        {
                            Global.LogText = @"Clicking on F5 Continue before F12";
                            WriteToLogFile.Run();
                            repo.Retech.ContinueF5_5_6_0_103.Click();
                            Thread.Sleep(100);
                            repo.Retech.ButtonCheckout.Click();
                            Thread.Sleep(100);
                        }
                    }
                }

                TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);                   // Subtract overhead and store in Global.Q4StatLine
                Global.CurrentMetricDesciption = @"[F12] wait for payment icons";
                Global.Module = "Finalize";
                DumpStatsQ4.Run();
            }

            MystopwatchQ4.Reset();
            MystopwatchQ4.Start();

            // Click on screen to make sure in focust - .focus not work
            //if(Global.DomesticRegister)    1-22-19
            //	repo.Retech.PaymentView.Click("689;82");

            switch (Global.PayWithMethod)
            {
            case "Cash":
                Global.LogText = @"Waiting on Cash F5";
                WriteToLogFile.Run();
                if (Global.DomesticRegister)
                {
                    repo.Retech.Self.Focus();
                }
                Thread.Sleep(100);

                if (Global.DomesticRegister)
                {
                    while (!repo.Retech.RequestCashSettlement.Enabled)
                    {
                        Thread.Sleep(500);
                    }
                }
                else
                {
                    while (!Host.Local.TryFindSingle(repo.FormPOS1.SelfInfo.AbsolutePath.ToString(), out element))
                    {
                        Thread.Sleep(500);
                    }
                    //while(!repo.EnterSerialNumber.F5Cash.Enabled) {	Thread.Sleep(500); }
                }
                Global.LogText = @"Found Cash F5 Enabled";
                WriteToLogFile.Run();
                break;

            case "Credit":
            case "PURCC":
                Global.LogText = @"Waiting on Manual Card F6";
                WriteToLogFile.Run();
                if (Global.DomesticRegister)
                {
                    repo.Retech.Self.Focus();
                }
                Thread.Sleep(100);

                if (Global.DomesticRegister)
                {
                    while (!repo.Retech.RequestManualCardSettlement.Enabled)
                    {
                        Thread.Sleep(500);
                    }
                }
                else
                {
                    while (!repo.EnterSerialNumber.F5Cash.Enabled)
                    {
                        Thread.Sleep(500);
                    }
                }

                Global.LogText = @"Found Manual Card F6 Enabled";
                WriteToLogFile.Run();
                break;
            }

            // Check for cash back
            if (Global.DomesticRegister &&
                repo.Retech.AmountDue.TextValue.Substring(0, 1) == "(" &&
                (Global.CurrentScenario == 37 || Global.CurrentScenario == 47)
                )
            {
                Global.LogText = @"Clicking on Cash F5 button";
                WriteToLogFile.Run();
                // fix 1//22/18
                while (!Host.Local.TryFindSingle(repo.Retech.RequestCashSettlementInfo.AbsolutePath.ToString(), out element))
                {
                    Thread.Sleep(100);
                }
                // end fix
                repo.Retech.RequestCashSettlement.Click();
                Thread.Sleep(100);
                Global.LogText = @"Waiting on CashPaymentView";
                WriteToLogFile.Run();
                while (!repo.RetechCardPaymentView.CashPaymentView.Enabled)
                {
                    Thread.Sleep(100);
                }
                Keyboard.Press("{Enter}");
            }
            else
            {
                string BalanceDueText      = "";
                string BalTemp             = "";
                float  BalanceDueAmount    = 0.0F;
                string BalanceDueAmountTxt = "";

                // Read Remaining Balance from screen
                if (Global.DomesticRegister)
                {
                    BalanceDueText      = repo.Retech.BalanceDue.TextValue;
                    BalTemp             = BalanceDueText.Substring(1, BalanceDueText.Length - 1);
                    BalanceDueAmount    = float.Parse(BalTemp);
                    BalanceDueAmountTxt = Convert.ToString(BalanceDueAmount);
                }
                else
                {
                    BalanceDueText      = repo.IntListItemAmountDue.ToString();
                    BalanceDueText      = BalanceDueText.Replace("\t", "  ");
                    BalTemp             = BalanceDueText.Substring(35, 8);
                    BalanceDueAmount    = float.Parse(BalTemp);
                    BalanceDueAmountTxt = Convert.ToString(BalanceDueAmount);
                }

                switch (Global.PayWithMethod)
                {
                case "Cash":
                    // Click on Cash F5 button
                    Global.LogText = @"Clicking on Cash F5 button";
                    WriteToLogFile.Run();

                    if (Global.DomesticRegister)
                    {
                        while (!Host.Local.TryFindSingle(repo.Retech.RequestCashSettlementInfo.AbsolutePath.ToString(), out element))
                        {
                            Thread.Sleep(100);
                        }                                                            // change 1/8/17
                        repo.Retech.RequestCashSettlement.Click();
                        while (!Host.Local.TryFindSingle(repo.RetechCardPaymentView.TxtAmountPaidInfo.AbsolutePath.ToString(), out element))
                        {
                            Thread.Sleep(100);
                        }

                        // Enter amount paid
                        repo.RetechCardPaymentView.TxtAmountPaid.TextValue = BalanceDueAmountTxt;
                        repo.RetechCardPaymentView.TxtAmountPaid.PressKeys("{Enter}");
                    }
                    else
                    {
                        repo.EnterSerialNumber.Self.PressKeys("{F5}");

                        // Enter amount paid
                        repo.Amount.Self.PressKeys("{Enter}");
                    }

                    TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);                               // Subtract overhead and store in Global.Q4StatLine
                    Global.CurrentMetricDesciption = @"[F5] enter amount press Enter";
                    Global.Module = "Finalize";
                    DumpStatsQ4.Run();

                    break;

                case "Credit":
                    if (Global.DomesticRegister)
                    {
                        // Click on Manual Card F6 button
                        Global.LogText = @"Clicking on Manual Card F6 button";
                        WriteToLogFile.Run();
                        repo.Retech.RequestManualCardSettlement.Click();

                        while (!repo.RetechCardPaymentView.RunAsCreditCard.Enabled)
                        {
                            if (!Host.Local.TryFindSingle(repo.RetechCardPaymentView.RetrySameCardInfo.AbsolutePath.ToString(), out element))
                            {
                                Global.LogText = @"Clicking on Retry same card";
                                WriteToLogFile.Run();
                                Global.TempErrorString = Global.LogText;
                                WriteToErrorFile.Run();
                                repo.RetechCardPaymentView.RetrySameCard.Click();
                                Thread.Sleep(200);
                            }
                            Thread.Sleep(100);
                        }

                        // Click on Run as Credit button
                        Global.LogText = @"Clicking on Run as Credit button";
                        WriteToLogFile.Run();
                        while (!Host.Local.TryFindSingle(repo.RetechCardPaymentView.RunAsCreditCardInfo.AbsolutePath.ToString(), out element))
                        {
                            Thread.Sleep(100);
                        }                                                            // change 1/8/17
                        repo.RetechCardPaymentView.RunAsCreditCard.Click();


                        string RetechVersion = Global.RetechVersion;
                        string Sub           = Global.RetechVersion.Substring(0, 4);
                        //						if(Global.RetechVersion.Substring(0,4) != "5.14")
                        if (Global.RetechVersion.Substring(0, 4) == "5.13")
                        {                                       // ### For Retech 5.13 and below - see else code for Retech 5.14
                            while (!repo.RetechCardPaymentView.TxtCardNumber.Enabled)
                            {
                                if (Host.Local.TryFindSingle(repo.RetechCardPaymentView.RetrySameCardInfo.AbsolutePath.ToString(), out element))
                                {
                                    repo.RetechCardPaymentView.RetrySameCard.Click();
                                    Thread.Sleep(200);
                                }
                                Thread.Sleep(100);
                            }

                            //						Thread.Sleep(500);

                            repo.RetechCardPaymentView.TxtCardNumber.TextValue = Global.CreditCardNumber;
                            string aa = Global.CreditCardMonth + "/" + Global.CreditCardYear;
                            repo.RetechCardPaymentView.TxtExpirationDate.TextValue = Global.CreditCardMonth + "/" + Global.CreditCardYear;
                            repo.RetechCardPaymentView.TxtZipCode.TextValue        = Global.CreditCardZip;

                            repo.RetechCardPaymentView.ProcessCreditCardView.PressKeys("{Enter}");
                            //						Thread.Sleep(100);

                            while (!Global.AbortScenario &&
                                   !Host.Local.TryFindSingle(repo.RetechCardPaymentView.Waiting_for_SignatureInfo.AbsolutePath.ToString(), out element))

                            {
                                Thread.Sleep(100);
                                if (Host.Local.TryFindSingle(repo.RetechCardPaymentView.TryAuthorizingAgainInfo.AbsolutePath.ToString(), out element))
                                {
                                    Global.AbortScenario   = true;
                                    Global.TempErrorString = "Credit Card Unable to Process Payment - transaction voided";
                                    WriteToErrorFile.Run();
                                    Global.LogText = Global.TempErrorString;
                                    WriteToLogFile.Run();
                                    Keyboard.Press("{Escape}");
                                    Thread.Sleep(100);
                                    repo.Retech.DataContextVoidOrderCommand.Click();
                                    Thread.Sleep(100);
                                    repo.GenericDialogView.Yesvoidthistransaction.Click();
                                    Thread.Sleep(100);
                                    while (!repo.RetechAnotherTransaction.Visible)
                                    {
                                        Thread.Sleep(100);
                                    }
                                }
                            }
                        }
                        else
                        {                                       // ### This required for Retech 5.14 and above because Ranorex not see detail of new pinpad
                                                                // 11/6/18 use WPF not UAI
                            repo.RetechPeripheralHostWindow.SomeTabPageList.PinPadAcceptCommand.Click();
                            Thread.Sleep(100);
                            repo.RetechPeripheralHostWindow.SomeTabPageList.PinPadCardNumber.TextValue = Global.CreditCardNumber;
                            repo.RetechPeripheralHostWindow.SomeTabPageList.PinPadOK.Click();
                            repo.RetechPeripheralHostWindow.SomeTabPageList.PinPadMonth.TextValue = Global.CreditCardMonth;
                            repo.RetechPeripheralHostWindow.SomeTabPageList.PinPadYear.TextValue  = Global.CreditCardYear;
                            repo.RetechPeripheralHostWindow.SomeTabPageList.PinPadOK.Click();
                            repo.RetechPeripheralHostWindow.PinPadZipCode.TextValue = Global.CreditCardZip;
                            repo.RetechPeripheralHostWindow.SomeTabPageList.AcceptCommand.Click();

// 11/6/18 replace by above
//					            repo.RetechPeripheralHostWindow.TabControl.Click("189;453");
//					            repo.RetechPeripheralHostWindow.TabControl.Click("31;84");
//					            Keyboard.Press(Global.CreditCardNumber);
//					            repo.RetechPeripheralHostWindow.TabControl.Click("157;472");
//					            repo.RetechPeripheralHostWindow.TabControl.Click("44;115");
//					            Keyboard.Press(Global.CreditCardMonth + "{Tab}" + Global.CreditCardYear);
//					            Thread.Sleep(200);
//					            repo.RetechPeripheralHostWindow.TabControl.Click("93;466");
//					            Thread.Sleep(200);
//					            repo.RetechPeripheralHostWindow.TabControl.Click("40;126");
//					            Thread.Sleep(350);
//					            Keyboard.Press(Global.CreditCardZip);
//					            repo.RetechPeripheralHostWindow.TabControl.Click("155;445");
//					            Thread.Sleep(100);
                        }

                        TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);                                   // Subtract overhead and store in Global.Q4StatLine
                        Global.CurrentMetricDesciption = @"[F6] enter Card info";
                        Global.Module = "Finalize";
                        DumpStatsQ4.Run();

                        MystopwatchQ4.Reset();
                        MystopwatchQ4.Start();

                        if (!Global.AbortScenario)
                        {
                            // 11/6/18 use WPF not UAI
                            repo.RetechPeripheralHostWindow.SomeTabPageList.ApplySignatureCommand.Click();
                            repo.RetechPeripheralHostWindow.SomeTabPageList.AcceptCommand.Click();
                            repo.RetechCardPaymentView.AcceptSignature.Click();

// 11/6/18 replace by above
//								while(!Host.Local.TryFindSingle(repo.RetechPeripheralHostWindow.SignOnPinPadInfo.AbsolutePath.ToString(), out element))
//								{ Thread.Sleep(100); }
//								repo.RetechPeripheralHostWindow.SignOnPinPad.Click();
//								Thread.Sleep(200);
//								repo.RetechPeripheralHostWindow.AcceptOnPinPad.Click();
//								Thread.Sleep(200);
//								repo.RetechCardPaymentView.Self.Focus();
//								Thread.Sleep(100);
//								repo.RetechCardPaymentView.SignatureAcceptedCommand.Click();
//								Thread.Sleep(200);

                            TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);                                       // Subtract overhead and store in Global.Q4StatLine
                            Global.CurrentMetricDesciption = @"Sign on pin pad";
                            Global.Module = "Finalize";
                            DumpStatsQ4.Run();
                        }
                    }
                    else
                    {
                        MystopwatchQ4.Reset();
                        MystopwatchQ4.Start();
                        repo.EnterSerialNumber.Self.PressKeys("{F9}");                                  // Seclect Credit Card
                        TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);                // Subtract overhead and store in Global.Q4StatLine
                        Global.CurrentMetricDesciption = @"[F9] Seclect Credit Card";
                        Global.Module = "Finalize";
                        DumpStatsQ4.Run();

                        MystopwatchQ4.Reset();
                        MystopwatchQ4.Start();
                        repo.Amount.Self.PressKeys("{Enter}");                                  // Enter amount paid
                        TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);        // Subtract overhead and store in Global.Q4StatLine
                        Global.CurrentMetricDesciption = @"Enter amount paid";
                        Global.Module = "Finalize";
                        DumpStatsQ4.Run();

                        MystopwatchQ4.Reset();
                        MystopwatchQ4.Start();
                        repo.InternatiuonalCreditCardType.Self.PressKeys("{F1}");                      // F1=Visa F2=MasterCard F3=American Express
                        TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);               // Subtract overhead and store in Global.Q4StatLine
                        Global.CurrentMetricDesciption = @"[F1] Seclect F1=Visa";
                        Global.Module = "Finalize";
                        DumpStatsQ4.Run();

                        repo.F1VISA.InternationalLast4OfCreditCard.PressKeys("9474{F5}");                      // Enter last 4 digits of credit card
                    }

                    break;

                case "PURCC":
                    // Click on Manual Card F6 button
                    Global.LogText = @"Clicking on Manual Card F6 button";
                    WriteToLogFile.Run();
                    repo.Retech.RequestManualCardSettlement.Click();
                    while (!repo.RetechCardPaymentView.RunAsPURCCCard.Enabled)
                    {
                        Thread.Sleep(100);
                    }

                    // Click on Run as PURCC button (Run as PowerUp Rewards Cerdit Cart
                    Global.LogText = @"Clicking on run as PURCC";
                    WriteToLogFile.Run();
                    repo.RetechCardPaymentView.RunAsPURCCCard.Click();
                    while (!Host.Local.TryFindSingle(repo.RetechCardPaymentView.TxtCardNumberInfo.AbsolutePath.ToString(), out element))
                    {
                        Thread.Sleep(100);
                    }

                    // Select ID type and Issuer (Drivers Lenense and State)
                    repo.RetechCardPaymentView.PickIdType.SelectedItemText = "Drivers License";
                    repo.RetechCardPaymentView.PickIdIssuer.Click();
                    repo.RetechCardPaymentView.PickIdIssuer.SelectedItemText = "Texas";
                    repo.RetechCardPaymentView.ProcessPrivateLabelCreditCardView.Click();

                    // Fill in PowerUp Rewards Credit Card Manual Entry
                    repo.RetechCardPaymentView.TxtCardNumber.TextValue = "7788400030000272";
                    repo.RetechCardPaymentView.TxtNameFromId.TextValue = "PAL User";
                    repo.RetechCardPaymentView.ProcessPrivateLabelCreditCardView.Click();
                    repo.RetechCardPaymentView.Self.PressKeys("{Enter}");

                    Global.LogText = @"Info entered - watching for Waiting for Signature";
                    WriteToLogFile.Run();

                    while (!Global.AbortScenario &&
                           !Host.Local.TryFindSingle(repo.RetechCardPaymentView.Waiting_for_SignatureInfo.AbsolutePath.ToString(), out element))
                    {
                        Thread.Sleep(100);
                        if (Host.Local.TryFindSingle(repo.RetechCardPaymentView.PaymentCouldNotBeAuthorizedAnUnknInfo.AbsolutePath.ToString(), out element))
                        {
                            Global.AbortScenario   = true;
                            Global.TempErrorString = "PURCC Unable to Process Payment - transaction voided";
                            WriteToErrorFile.Run();
                            Global.LogText = Global.TempErrorString;
                            WriteToLogFile.Run();
                            Keyboard.Press("{Escape}");
                            Thread.Sleep(100);
                            repo.Retech.DataContextVoidOrderCommand.Click();
                            Thread.Sleep(100);
                            repo.GenericDialogView.Yesvoidthistransaction.Click();
                            Thread.Sleep(100);
                            while (!repo.RetechAnotherTransaction.Visible)
                            {
                                Thread.Sleep(100);
                            }
                        }
                    }
                    if (!Global.AbortScenario)
                    {
                        repo.RetechPeripheralHostWindow.SignOnPinPad.Click();
                        Thread.Sleep(200);
                        repo.RetechPeripheralHostWindow.AcceptOnPinPad.Click();
                        Thread.Sleep(200);
                        repo.RetechCardPaymentView.Self.Focus();
                        Thread.Sleep(100);
                        repo.RetechCardPaymentView.SignatureAcceptedCommand.Click();
                        Thread.Sleep(200);
                    }
                    break;
                }


                MystopwatchQ4.Reset();
                MystopwatchQ4.Start();

                if (Global.DomesticRegister)
                {
                    // Wait for Another Transaction pop-up
                    while (!Host.Local.TryFindSingle(repo.RetechAnotherTransactionInfo.AbsolutePath.ToString(), out element))
                    {
                        Thread.Sleep(100);
                        if (Host.Local.TryFindSingle(repo.RetechTillOverageWarningView.CodeF4AlertInfo.AbsolutePath.ToString(), out element)
                            ||
                            Host.Local.TryFindSingle(repo.RetechTillOverageWarningView.CodeF4Alert2Info.AbsolutePath.ToString(), out element)
                            )
                        {
                            GlobalOverhead.Stopwatch.Start();
                            repo.RetechTillOverageWarningView.DropCashCommand.Click();
                            while (!repo.RetechLoginView.TxtPassword.Enabled)
                            {
                                Thread.Sleep(100);
                            }
                            repo.RetechLoginView.TxtPassword.PressKeys("advanced{Return}");
                            while (!repo.RetechTillDepositView.DropBoxAmount.Enabled)
                            {
                                Thread.Sleep(100);
                            }
                            repo.RetechTillDepositView.DropBoxAmount.PressKeys("40000");
                            repo.RetechTillDepositView.AddCashDropButton.Click();
                            Thread.Sleep(1000);
                            repo.RetechTillDepositView.DropBoxAmount.PressKeys("{Escape}");
                            GlobalOverhead.Stopwatch.Stop();
                        }
                    }
                }
                else
                {
                    // Wait for log on screen
                    if (Global.CurrentScenario == 47 ||
                        Global.CurrentScenario == 20 ||
                        Global.CurrentScenario == 16 ||
                        Global.CurrentScenario == 33 ||
                        Global.CurrentScenario == 34
                        )
                    {
                        Thread.Sleep(100);
                        while (!Host.Local.TryFindSingle(repo.IPOSScreen.ChangeDueInfo.AbsolutePath.ToString(), out element) &&
                               !repo.LogOn.LoginID.HasFocus
                               )
                        {
                            InternationalCheckForCodeF4Alert();                                     // 11/1/18
                            Thread.Sleep(200);
                        }
                        while (Host.Local.TryFindSingle(repo.IPOSScreen.ChangeDueInfo.AbsolutePath.ToString(), out element) &&
                               !repo.LogOn.LoginID.HasFocus
                               )
                        {
                            InternationalCheckForCodeF4Alert();                                     // 11/1/18
                            Thread.Sleep(200);
                        }
                    }
                    while (!Host.Local.TryFindSingle(repo.LogOn.LoginIDInfo.AbsolutePath.ToString(), out element))
                    {
                        Thread.Sleep(200);
                    }
                    while (!repo.LogOn.LoginID.Enabled)
                    {
                        Thread.Sleep(200);
                    }
                }
            }


            TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);               // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = @"Wait for another transaction ESC";
            Global.Module = "Finalize";
            DumpStatsQ4.Run();

            switch (Global.PayWithMethod)
            {
            case "Cash":
                Global.NowPayWithCash = Global.AdjustedTime;
                break;

            case "Credit":
                Global.NowPayWithCredit = Global.AdjustedTime;
                break;

            case "PURCC":
                Global.NowPayWithPURCC = Global.AdjustedTime;
                break;
            }

            MystopwatchQ4.Reset();
            MystopwatchQ4.Start();

            if (Global.DomesticRegister)
            {
                // Press excape key on Another Transaction pop-up
                while (!Host.Local.TryFindSingle(repo.RetechLoginView.TxtPasswordInfo.AbsolutePath.ToString(), out element))
                {
                    Thread.Sleep(100);
                }
                repo.RetechLoginView.TxtPassword.PressKeys("{Escape}");
            }
            else
            {
                // Press escape on log on screen
//				repo.LogOn.Self.PressKeys("{Escape}");
//				repo.LogOn.LogOn.Click("231;6");
//              Delay.Milliseconds(200);
//              Keyboard.Press("{Escape}");
                Thread.Sleep(200);
                while (!repo.LogOn.LogOn.Enabled)
                {
                    Thread.Sleep(200);
                }
                repo.LogOn.LogOn.PressKeys("");
                Delay.Milliseconds(200);
                repo.LogOn.LogOn.PressKeys("{Escape}");
            }

            if (!Global.DomesticRegister) // International Store
            {                             // Catch hanging logon
                Thread.Sleep(100);
                if (Host.Local.TryFindSingle(repo.LogOn.LogOnInfo.AbsolutePath.ToString(), out element))
                {
                    Keyboard.Press("{Escape}");
                }
            }

            TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);   // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = "Wait for Start a Transaction ESC";
            Global.Module = "Finalize";
            DumpStatsQ4.Run();

            TimeMinusOverhead.Run((float)MystopwatchModuleTotal.ElapsedMilliseconds);   // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = "Module Total Time";
            Global.Module = "Finalize";
            DumpStatsQ4.Run();

            Global.LogText = "OUT fnCheckout";
            WriteToLogFile.Run();
            Global.LogFileIndentLevel--;
        }
Пример #2
0
        //
        // P R E   C H E C K   O U T   N O N   Z E r o   b a l a n c e##############################################################################
        //
        private void SpecialPreCheckOutNonZeroBalance()
        {
            Mouse.DefaultMoveTime        = 300;
            Keyboard.DefaultKeyPressTime = 100;
            Delay.SpeedFactor            = 1.0;

            Ranorex.Unknown element = null;

            RanorexRepository   repo              = new RanorexRepository();
            fnWriteToLogFile    WriteToLogFile    = new fnWriteToLogFile();
            fnTimeMinusOverhead TimeMinusOverhead = new fnTimeMinusOverhead();
            fnDumpStatsQ4       DumpStatsQ4       = new fnDumpStatsQ4();
            fnWriteToErrorFile  WriteToErrorFile  = new fnWriteToErrorFile();

            // Check for Please select a charity to donate
            if (Host.Local.TryFindSingle(repo.RetechPeripheralHostWindow.PleaseSelectACharityToDonateInfo.AbsolutePath.ToString(), out element))
            {
                repo.RetechPeripheralHostWindow.DeclineDonateNoThanks.Click();
                Thread.Sleep(100);
            }


            Global.LogText = @"Waiting on Time to Check Out - fnProductionIssueFunctions()";
            WriteToLogFile.Run();
            Thread.Sleep(100);
            while (!Host.Local.TryFindSingle(repo.Retech.TimeToCheckOutInfo.AbsolutePath.ToString(), out element))
            {
                if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element))
                {
                    repo.ContinueButtonCommand.Click();
                    Global.LogText = @"Clicked on Continue Button - fnProductionIssueFunctions()";
                    WriteToLogFile.Run();
                    Thread.Sleep(100);
                }

                Thread.Sleep(100);
                if (Host.Local.TryFindSingle(repo.Retech.AcknowledgeRelatedProductsCommandInfo.AbsolutePath.ToString(), out element))
                {
                    if (Host.Local.TryFindSingle(repo.Retech.AcknowledgeRelatedProductsCommandInfo.AbsolutePath.ToString(), out element))
                    {
                        if (repo.Retech.AcknowledgeRelatedProductsCommand.Enabled)
                        {
                            Global.LogText = @"Clicking on acknowledge related products before F12";
                            WriteToLogFile.Run();
                            repo.Retech.AcknowledgeRelatedProductsCommand.Click();
                            Thread.Sleep(100);
                        }
                    }
                }
                else if (Host.Local.TryFindSingle(repo.Retech.ContinueF5_5_6_0_103Info.AbsolutePath.ToString(), out element))
                {
                    if (repo.Retech.ContinueF5_5_6_0_103.Enabled)
                    {
                        Global.LogText = @"Clicking on F5 Continue before F12";
                        WriteToLogFile.Run();
                        repo.Retech.ContinueF5_5_6_0_103.Click();
                        Thread.Sleep(100);
                        repo.Retech.ButtonCheckout.Click();
                        Thread.Sleep(100);
                    }
                }
            }

            // Click on screen to make sure in focust - .focus not work
            //repo.Retech.PaymentView.Click("689;82");  1-22-19

            switch (Global.PayWithMethod)
            {
            case "Cash":
                Global.LogText = @"Waiting on Cash F5";
                WriteToLogFile.Run();
                repo.Retech.Self.Focus();
                Thread.Sleep(100);
                while (!repo.Retech.RequestCashSettlement.Enabled)
                {
                    Thread.Sleep(500);
                }
                Global.LogText = @"Found Cash F5 Enabled";
                WriteToLogFile.Run();
                break;

            case "Credit":
            case "PURCC":
                Global.LogText = @"Waiting on Manual Card F6";
                WriteToLogFile.Run();
                repo.Retech.Self.Focus();
                Thread.Sleep(100);
                while (!repo.Retech.RequestManualCardSettlement.Enabled)
                {
                    Thread.Sleep(500);
                }
                Global.LogText = @"Found Manual Card F6 Enabled";
                WriteToLogFile.Run();
                break;
            }

            // Read Remaining Balance from screen
            string BalanceDueText      = repo.Retech.BalanceDue.TextValue;
            string BalTemp             = BalanceDueText.Substring(1, BalanceDueText.Length - 1);
            float  BalanceDueAmount    = float.Parse(BalTemp);
            string BalanceDueAmountTxt = Convert.ToString(BalanceDueAmount);

            switch (Global.PayWithMethod)
            {
            case "Cash":
                // Click on Cash F5 button
                Global.LogText = @"Clicking on Cash F5 button";
                WriteToLogFile.Run();
                repo.Retech.RequestCashSettlement.Click();
                while (!Host.Local.TryFindSingle(repo.RetechCardPaymentView.TxtAmountPaidInfo.AbsolutePath.ToString(), out element))
                {
                    Thread.Sleep(100);
                }

                // Enter amount paid
                if (Global.SpecialPayThisAmount == "All")
                {
                    repo.RetechCardPaymentView.TxtAmountPaid.TextValue = BalanceDueAmountTxt;
                }
                else
                {
                    repo.RetechCardPaymentView.TxtAmountPaid.TextValue = Global.SpecialPayThisAmount;
                }
                repo.RetechCardPaymentView.TxtAmountPaid.PressKeys("{Enter}");

                break;

            case "Credit":
                // Click on Manual Card F6 button
                Global.LogText = @"Clicking on Manual Card F6 button";
                WriteToLogFile.Run();
                repo.Retech.RequestManualCardSettlement.Click();

                while (!repo.RetechCardPaymentView.RunAsCreditCard.Enabled)
                {
                    Thread.Sleep(100);
                }

                // Click on Run as Credit button
                Global.LogText = @"Clicking on Run as Credit button";
                WriteToLogFile.Run();
                repo.RetechCardPaymentView.RunAsCreditCard.Click();
                Thread.Sleep(500);

                repo.RetechCardPaymentView.TxtCardNumber.TextValue     = Global.CreditCardNumber;
                repo.RetechCardPaymentView.TxtExpirationDate.TextValue = Global.CreditCardMonth + "/" + Global.CreditCardYear;
                repo.RetechCardPaymentView.TxtZipCode.TextValue        = Global.CreditCardZip;
                // Enter amount paid
                if (Global.SpecialPayThisAmount == "All")
                {
                    repo.RetechCardPaymentView.TxtAmountToCharge.TextValue = BalanceDueAmountTxt;
                }
                else
                {
                    repo.RetechCardPaymentView.TxtAmountToCharge.TextValue = Global.SpecialPayThisAmount;
                }
                repo.RetechCardPaymentView.ProcessCreditCardView.PressKeys("{Enter}");
                Thread.Sleep(100);
                while (!Global.AbortScenario &&
                       !Host.Local.TryFindSingle(repo.RetechCardPaymentView.Waiting_for_SignatureInfo.AbsolutePath.ToString(), out element))
                {
                    Thread.Sleep(100);
                    if (Host.Local.TryFindSingle(repo.RetechCardPaymentView.TryAuthorizingAgainInfo.AbsolutePath.ToString(), out element))
                    {
                        Global.AbortScenario   = true;
                        Global.TempErrorString = "Credit Card Unable to Process Payment - transaction voided";
                        WriteToErrorFile.Run();
                        Global.LogText = Global.TempErrorString;
                        WriteToLogFile.Run();
                        Keyboard.Press("{Escape}");
                        Thread.Sleep(100);
                        repo.Retech.DataContextVoidOrderCommand.Click();
                        Thread.Sleep(100);
                        repo.GenericDialogView.Yesvoidthistransaction.Click();
                        Thread.Sleep(100);
                        while (!repo.RetechAnotherTransaction.Visible)
                        {
                            Thread.Sleep(100);
                        }
                    }
                }
                if (!Global.AbortScenario)
                {
                    repo.RetechPeripheralHostWindow.SignOnPinPad.Click();
                    Thread.Sleep(200);
                    repo.RetechPeripheralHostWindow.AcceptOnPinPad.Click();
                    Thread.Sleep(200);
                    repo.RetechCardPaymentView.Self.Focus();
                    Thread.Sleep(100);
                    repo.RetechCardPaymentView.SignatureAcceptedCommand.Click();
                    Thread.Sleep(200);
                }

                break;

            case "PURCC":
                // Click on Manual Card F6 button
                Global.LogText = @"Clicking on Manual Card F6 button";
                WriteToLogFile.Run();
                repo.Retech.RequestManualCardSettlement.Click();
                while (!repo.RetechCardPaymentView.RunAsPURCCCard.Enabled)
                {
                    Thread.Sleep(100);
                }

                // Click on Run as PURCC button (Run as PowerUp Rewards Cerdit Cart
                Global.LogText = @"Clicking on run as PURCC";
                WriteToLogFile.Run();
                repo.RetechCardPaymentView.RunAsPURCCCard.Click();
                while (!Host.Local.TryFindSingle(repo.RetechCardPaymentView.TxtCardNumberInfo.AbsolutePath.ToString(), out element))
                {
                    Thread.Sleep(100);
                }

                // Select ID type and Issuer (Drivers Lenense and State)
                repo.RetechCardPaymentView.PickIdType.SelectedItemText = "Drivers License";
                repo.RetechCardPaymentView.PickIdIssuer.Click();
                repo.RetechCardPaymentView.PickIdIssuer.SelectedItemText = "Texas";
                repo.RetechCardPaymentView.ProcessPrivateLabelCreditCardView.Click();

                // Fill in PowerUp Rewards Credit Card Manual Entry
                repo.RetechCardPaymentView.TxtCardNumber.TextValue = "7788400030000272";
                repo.RetechCardPaymentView.TxtNameFromId.TextValue = "PAL User";
                repo.RetechCardPaymentView.ProcessPrivateLabelCreditCardView.Click();
                repo.RetechCardPaymentView.Self.PressKeys("{Enter}");

                Global.LogText = @"Info entered - watching for Waiting for Signature";
                WriteToLogFile.Run();

                while (!Global.AbortScenario &&
                       !Host.Local.TryFindSingle(repo.RetechCardPaymentView.Waiting_for_SignatureInfo.AbsolutePath.ToString(), out element))
                {
                    Thread.Sleep(100);
                    if (Host.Local.TryFindSingle(repo.RetechCardPaymentView.PaymentCouldNotBeAuthorizedAnUnknInfo.AbsolutePath.ToString(), out element))
                    {
                        Global.AbortScenario   = true;
                        Global.TempErrorString = "PURCC Unable to Process Payment - transaction voided";
                        WriteToErrorFile.Run();
                        Global.LogText = Global.TempErrorString;
                        WriteToLogFile.Run();
                        Keyboard.Press("{Escape}");
                        Thread.Sleep(100);
                        repo.Retech.DataContextVoidOrderCommand.Click();
                        Thread.Sleep(100);
                        repo.GenericDialogView.Yesvoidthistransaction.Click();
                        Thread.Sleep(100);
                        while (!repo.RetechAnotherTransaction.Visible)
                        {
                            Thread.Sleep(100);
                        }
                    }
                }
                if (!Global.AbortScenario)
                {
                    repo.RetechPeripheralHostWindow.SignOnPinPad.Click();
                    Thread.Sleep(200);
                    repo.RetechPeripheralHostWindow.AcceptOnPinPad.Click();
                    Thread.Sleep(200);
                    repo.RetechCardPaymentView.Self.Focus();
                    Thread.Sleep(100);
                    repo.RetechCardPaymentView.SignatureAcceptedCommand.Click();
                    Thread.Sleep(200);
                }
                break;
            }
        }
Пример #3
0
        public void Run()
        {
            Mouse.DefaultMoveTime        = 300;
            Keyboard.DefaultKeyPressTime = 100;
            Delay.SpeedFactor            = 1.0;

            Ranorex.Unknown element = null;

            RanorexRepository   repo              = new RanorexRepository();
            fnWriteToLogFile    WriteToLogFile    = new fnWriteToLogFile();
            fnTimeMinusOverhead TimeMinusOverhead = new fnTimeMinusOverhead();
            fnDumpStatsQ4       DumpStatsQ4       = new fnDumpStatsQ4();
            fnWriteToErrorFile  WriteToErrorFile  = new fnWriteToErrorFile();

            // Create new stopwatch
            Stopwatch MystopwatchTT = new Stopwatch();

            MystopwatchTT.Reset();
            MystopwatchTT.Start();

            Stopwatch MystopwatchQ4          = new Stopwatch();
            Stopwatch MystopwatchModuleTotal = new Stopwatch();

            MystopwatchModuleTotal.Reset();
            MystopwatchModuleTotal.Start();

            Global.LogText = @"Start Transaction";
            WriteToLogFile.Run();

            MystopwatchQ4.Reset();
            MystopwatchQ4.Start();
            bool StatsWritten = false;

            if (Global.DomesticRegister)
            {
                Global.LogText = @"Clicking on ReTech screen then press F5";
                WriteToLogFile.Run();
                repo.ReTechStartTransaction.PressKeys("{F5}");
                Thread.Sleep(100);

                if (Host.Local.TryFindSingle(repo.GenericDialogView.CriticalErrorSavingTransactionCallHInfo.AbsolutePath.ToString(), out element))
                {
                    repo.GenericDialogView.ErrorSavingButtonOK.Click();
                    Thread.Sleep(200);
                    Global.TempErrorString = "Error Saving Transaction";
                    WriteToErrorFile.Run();
                    Global.LogText = Global.TempErrorString;
                    WriteToLogFile.Run();
                }

                Global.LogText = @"Waiting for logon";
                WriteToLogFile.Run();
                while (!Host.Local.TryFindSingle(repo.RetechLoginView.TxtPasswordInfo.AbsolutePath.ToString(), out element))
                {
                    Thread.Sleep(200);
                    float MetricTimeDiv1000 = MystopwatchQ4.ElapsedMilliseconds / 1000;
                    if (MetricTimeDiv1000 > 20.0 && !StatsWritten)
                    {
                        StatsWritten   = true;
                        Global.LogText = @"Process Stats captured waiting for TryFindSingle([F5] Start Transaction TryFindSingle(repo.RetechLoginView.TxtPassword";
                        WriteToLogFile.Run();

                        // Write out Tasklist to file in C:\PAL\Reports String.Empty
                        string TimeStampPart = System.DateTime.Now.ToString();
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[/]", "");
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[:]", "");
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[ ]", "");
                        TimeStampPart = "_" + TimeStampPart;
                        string FullCsvFilename = Global.RegisterName;
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[-]", "R");
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[(]", "_");
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[)]", "_");
                        string CsvFilename = FullCsvFilename + TimeStampPart;
                        FullCsvFilename = FullCsvFilename + TimeStampPart + "_F5_Start_Transaction_pressed_waiting_for_while(!Host.Local.TryFindSingle(repo.RetechLoginView.TxtPassword...)";

                        var proc = new Process
                        {
                            StartInfo = new ProcessStartInfo
                            {
                                FileName               = Global.Register1DriveLetter + @":\PAL\Reports\GetTaskList.bat",
                                Arguments              = FullCsvFilename,
                                UseShellExecute        = false,
                                RedirectStandardOutput = true,
                                CreateNoWindow         = true,
                                WorkingDirectory       = Global.Register1DriveLetter + @":\PAL\Reports\"
                            }
                        };

                        proc.Start();


                        var proc2 = new Process
                        {
                            StartInfo = new ProcessStartInfo
                            {
                                FileName               = Global.Register1DriveLetter + @":\PAL\Reports\CPU.bat",
                                Arguments              = CsvFilename,
                                UseShellExecute        = false,
                                RedirectStandardOutput = true,
                                CreateNoWindow         = true,
                                WorkingDirectory       = Global.Register1DriveLetter + @":\PAL\Reports\"
                            }
                        };

                        proc2.Start();
                    }

                    if (Host.Local.TryFindSingle(repo.GenericDialogView.CriticalErrorSavingTransactionCallHInfo.AbsolutePath.ToString(), out element))
                    {
                        repo.GenericDialogView.ErrorSavingButtonOK.Click();
                        Thread.Sleep(200);
                        Global.TempErrorString = "Error Saving Transaction";
                        WriteToErrorFile.Run();
                        Global.LogText = Global.TempErrorString;
                        WriteToLogFile.Run();
                    }
                }
            }
            else
            {
                // Click on F5 POS Register - international
                //repo.IPOSScreen.ContainerF7BackOffice.Click("32;55");
                repo.IPOSScreen.Self.Click();
                Delay.Milliseconds(200);
                Keyboard.Press("{F5}");

                while (!repo.LogOn.InternationalLoginID.Enabled)
                {
                    Thread.Sleep(100);
                }

                repo.LogOn.InternationalLoginID.PressKeys("psu");
            }
            Global.TempFloat = (float)MystopwatchQ4.ElapsedMilliseconds / 1000;
            TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);               // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = @"[F5] Start Transaction";
            Global.Module = "Log On";
            DumpStatsQ4.Run();

            // Enter Password
            MystopwatchQ4.Reset();
            MystopwatchQ4.Start();
            StatsWritten = false;

            if (Global.DomesticRegister)
            {
                Global.LogText = @"Waiting for Password field to appear";
                WriteToLogFile.Run();

                while (!Host.Local.TryFindSingle(repo.ReTechLogonPasswordInfo.AbsolutePath.ToString(), out element))
                {
                    Thread.Sleep(100);
                    float MetricTimeDiv1000 = MystopwatchQ4.ElapsedMilliseconds / 1000;
                    if (MetricTimeDiv1000 > 20.0 && !StatsWritten)
                    {
                        StatsWritten   = true;
                        Global.LogText = @"Process Stats captured waiting for (!Host.Local.TryFindSingle(repo.ReTechLogonPassword...";
                        WriteToLogFile.Run();

                        // Write out Tasklist to file in C:\PAL\Reports String.Empty
                        string TimeStampPart = System.DateTime.Now.ToString();
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[/]", "");
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[:]", "");
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[ ]", "");
                        TimeStampPart = "_" + TimeStampPart;
                        string FullCsvFilename = Global.RegisterName;
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[-]", "R");
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[(]", "_");
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[)]", "_");
                        string CsvFilename = FullCsvFilename + TimeStampPart;
                        FullCsvFilename = FullCsvFilename + TimeStampPart + "_waiting_for_(!Host.Local.TryFindSingle(repo.ReTechLogonPassword...)";

                        var proc = new Process
                        {
                            StartInfo = new ProcessStartInfo
                            {
                                FileName               = Global.Register1DriveLetter + @":\PAL\Reports\GetTaskList.bat",
                                Arguments              = FullCsvFilename,
                                UseShellExecute        = false,
                                RedirectStandardOutput = true,
                                CreateNoWindow         = true,
                                WorkingDirectory       = Global.Register1DriveLetter + @":\PAL\Reports\"
                            }
                        };

                        proc.Start();

                        var proc2 = new Process
                        {
                            StartInfo = new ProcessStartInfo
                            {
                                FileName               = Global.Register1DriveLetter + @":\PAL\Reports\CPU.bat",
                                Arguments              = CsvFilename,
                                UseShellExecute        = false,
                                RedirectStandardOutput = true,
                                CreateNoWindow         = true,
                                WorkingDirectory       = Global.Register1DriveLetter + @":\PAL\Reports\"
                            }
                        };

                        proc2.Start();
                    }
                }

                Global.LogText = @"Waiting for Password field to be enabled";
                WriteToLogFile.Run();
                while (!repo.ReTechLogonPassword.Enabled)
                {
                    Thread.Sleep(100);
                    float MetricTimeDiv1000 = MystopwatchQ4.ElapsedMilliseconds / 1000;
                    if (MetricTimeDiv1000 > 20.0 && !StatsWritten)
                    {
                        StatsWritten   = true;
                        Global.LogText = @"Process Stats captured waiting for repo.ReTechLogonPassword.Enabled";
                        WriteToLogFile.Run();

                        // Write out Tasklist to file in C:\PAL\Reports String.Empty
                        string TimeStampPart = System.DateTime.Now.ToString();
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[/]", "");
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[:]", "");
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[ ]", "");
                        TimeStampPart = "_" + TimeStampPart;
                        string FullCsvFilename = Global.RegisterName;
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[-]", "R");
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[(]", "_");
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[)]", "_");
                        string CsvFilename = FullCsvFilename + TimeStampPart;
                        FullCsvFilename = FullCsvFilename + TimeStampPart + "_waiting_for_while(!repo.ReTechLogonPassword.Enabled)";

                        var proc = new Process
                        {
                            StartInfo = new ProcessStartInfo
                            {
                                FileName               = Global.Register1DriveLetter + @":\PAL\Reports\GetTaskList.bat",
                                Arguments              = FullCsvFilename,
                                UseShellExecute        = false,
                                RedirectStandardOutput = true,
                                CreateNoWindow         = true,
                                WorkingDirectory       = Global.Register1DriveLetter + @":\PAL\Reports\"
                            }
                        };

                        proc.Start();

                        var proc2 = new Process
                        {
                            StartInfo = new ProcessStartInfo
                            {
                                FileName               = Global.Register1DriveLetter + @":\PAL\Reports\CPU.bat",
                                Arguments              = CsvFilename,
                                UseShellExecute        = false,
                                RedirectStandardOutput = true,
                                CreateNoWindow         = true,
                                WorkingDirectory       = Global.Register1DriveLetter + @":\PAL\Reports\"
                            }
                        };

                        proc2.Start();
                    }
                }
                Global.LogText = @"Entering password";
                WriteToLogFile.Run();
                repo.RetechLoginView.TxtPassword.PressKeys("advanced{Return}");
                Global.LogText = @"Password entered - wating for Add Line F1";
                WriteToLogFile.Run();
                Thread.Sleep(500);


                // ############################################################
                // If login takes longer than 20 seconds write out process stats
                while (!Host.Local.TryFindSingle(repo.AddLineItemCommandInfo.AbsolutePath.ToString(), 1000, out element))
                {
                    Thread.Sleep(200);
                    float MetricTimeDiv1000 = MystopwatchQ4.ElapsedMilliseconds / 1000;
                    if (MetricTimeDiv1000 > 20.0 && !StatsWritten)
                    {
                        StatsWritten   = true;
                        Global.LogText = @"Process Stats captured waiting for TryFindSingle(repo.AddLineItemCommandInfo";
                        WriteToLogFile.Run();

                        // Write out Tasklist to file in C:\PAL\Reports String.Empty
                        string TimeStampPart = System.DateTime.Now.ToString();
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[/]", "");
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[:]", "");
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[ ]", "");
                        TimeStampPart = "_" + TimeStampPart;
                        string FullCsvFilename = Global.RegisterName;
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[-]", "R");
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[(]", "_");
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[)]", "_");
                        string CsvFilename = FullCsvFilename + TimeStampPart;
                        FullCsvFilename = FullCsvFilename + TimeStampPart + "_waiting_for_while(!Host.Local.TryFindSingle(repo.AddLineItemCommand...)";

                        var proc = new Process
                        {
                            StartInfo = new ProcessStartInfo
                            {
                                FileName               = Global.Register1DriveLetter + @":\PAL\Reports\GetTaskList.bat",
                                Arguments              = FullCsvFilename,
                                UseShellExecute        = false,
                                RedirectStandardOutput = true,
                                CreateNoWindow         = true,
                                WorkingDirectory       = Global.Register1DriveLetter + @":\PAL\Reports\"
                            }
                        };

                        proc.Start();

                        var proc2 = new Process
                        {
                            StartInfo = new ProcessStartInfo
                            {
                                FileName               = Global.Register1DriveLetter + @":\PAL\Reports\CPU.bat",
                                Arguments              = CsvFilename,
                                UseShellExecute        = false,
                                RedirectStandardOutput = true,
                                CreateNoWindow         = true,
                                WorkingDirectory       = Global.Register1DriveLetter + @":\PAL\Reports\"
                            }
                        };

                        proc2.Start();
                    }
                }


                Global.LogText = @"Wating for Add Line F1 - waiting till Enabled";
                WriteToLogFile.Run();
                while (!repo.AddLineItemCommand.Enabled)
                {
                    Thread.Sleep(200);
                    float MetricTimeDiv1000 = MystopwatchQ4.ElapsedMilliseconds / 1000;
                    if (MetricTimeDiv1000 > 20.0 && !StatsWritten)
                    {
                        StatsWritten   = true;
                        Global.LogText = @"Process Stats captured waiting for TryFindSingle(repo.AddLineItemCommand.Enabled";
                        WriteToLogFile.Run();

                        // Write out Tasklist to file in C:\PAL\Reports String.Empty
                        string TimeStampPart = System.DateTime.Now.ToString();
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[/]", "");
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[:]", "");
                        TimeStampPart = Regex.Replace(TimeStampPart, @"[ ]", "");
                        TimeStampPart = "_" + TimeStampPart;
                        string FullCsvFilename = Global.RegisterName;
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[-]", "R");
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[(]", "_");
                        FullCsvFilename = Regex.Replace(FullCsvFilename, @"[)]", "_");
                        string CsvFilename = FullCsvFilename + TimeStampPart;
                        FullCsvFilename = FullCsvFilename + TimeStampPart + "_waiting_for_while(!repo.AddLineItemCommand.Enabled)";

                        var proc = new Process
                        {
                            StartInfo = new ProcessStartInfo
                            {
                                FileName               = Global.Register1DriveLetter + @":\PAL\Reports\GetTaskList.bat",
                                Arguments              = FullCsvFilename,
                                UseShellExecute        = false,
                                RedirectStandardOutput = true,
                                CreateNoWindow         = true,
                                WorkingDirectory       = Global.Register1DriveLetter + @":\PAL\Reports\"
                            }
                        };

                        proc.Start();

                        var proc2 = new Process
                        {
                            StartInfo = new ProcessStartInfo
                            {
                                FileName               = Global.Register1DriveLetter + @":\PAL\Reports\CPU.bat",
                                Arguments              = CsvFilename,
                                UseShellExecute        = false,
                                RedirectStandardOutput = true,
                                CreateNoWindow         = true,
                                WorkingDirectory       = Global.Register1DriveLetter + @":\PAL\Reports\"
                            }
                        };

                        proc2.Start();
                    }
                    if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element))
                    {
                        repo.ContinueButtonCommand.Click();
                        Thread.Sleep(200);
                    }
                }
                Global.LogText = @"Add Line F1 - found enabled";
                WriteToLogFile.Run();

                // If Customer Info then just skip by continue
                if (Host.Local.TryFindSingle(repo.Retech.ContinueButtonCommand2Info.AbsolutePath.ToString(), out element))
                {
                    repo.Retech.ContinueButtonCommand2.Click();
                    Thread.Sleep(100);
                }
            }
            else
            {              // International
                repo.LogOn.InternationalPassword.PressKeys("advanced{Return}");
                //while(!repo.ReservationDeposit.EnterSerialNumber.Enabled)
                //{	Thread.Sleep(100);	}
                //repo.ReservationDeposit.EnterSerialNumber.PressKeys("{Escape}");
                //repo.FormPOS.Self.PressKeys("{Escape}");
                Thread.Sleep(100);
                repo.NotEnrolledEsc.Click();
                Thread.Sleep(100);
            }

            TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);               // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = "Enter Password";
            Global.Module = "Log On";
            DumpStatsQ4.Run();

            TimeMinusOverhead.Run((float)MystopwatchModuleTotal.ElapsedMilliseconds);   // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = "Module Total Time";
            Global.Module = "Log On";
            DumpStatsQ4.Run();
        }
Пример #4
0
        public static int Main(string[] args)
        {
            // Uncomment the following 2 lines if you want to automate Windows apps
            // by starting the test executable directly
            //if (Util.IsRestartRequiredForWinAppAccess)
            //    return Util.RestartWithUiAccess();

            fnPlayWavFile      PlayWavFile      = new fnPlayWavFile();
            fnWriteToLogFile   WriteToLogFile   = new fnWriteToLogFile();
            fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile();
            SpeechSynthesizer  Speech           = new SpeechSynthesizer();

            Keyboard.AbortKey = System.Windows.Forms.Keys.Escape;
            int error = 0;

            // To autorun Scripts in directory <C: on reg1, D: on reg 2-n>/PAL/RanorexStudio Projects\Ranorex Automation\Alpha\bin\Debug
            //	NOTE: autorun is assumed to be type Baseline
            //      RanorexAutomation.exe auto [<iteratins-time> [<Scenario-list>] ]
            //			<iteratins-time> = number iterations
            //			<iteratins-time> = time to stop "6:00 am"
            //			<iteratins-time> = time to start and stop "6:00 am to 3:00 PM"
            //			<Scenario-list> =  list if scenarios to run comma delited "3,4,6-20"
            //		If neither <iteratins-time> or <Scenario-list> supplied will run using same paramaters as last run
            //		Just auto <iterations-time> can be given, will ust last run scenario list

            // Get command line argumets
            Global.CommandLineArg0 = "";
            Global.CommandLineArg1 = "";
            Global.CommandLineArg2 = "";
            Global.CommandLineArg3 = "";
            string[] RanorexCmdLine = Environment.GetCommandLineArgs();
            int      Arguments      = args.Length;

            switch (Arguments)
            {
            case 1:
                Global.CommandLineArg0 = RanorexCmdLine[0].ToUpper();
                Global.CommandLineArg1 = RanorexCmdLine[1].ToUpper();
                break;

            case 2:
                Global.CommandLineArg0 = RanorexCmdLine[0].ToUpper();
                Global.CommandLineArg1 = RanorexCmdLine[1].ToUpper();
                Global.CommandLineArg2 = RanorexCmdLine[2].ToUpper();
                break;

            case 3:
                Global.CommandLineArg0 = RanorexCmdLine[0].ToUpper();
                Global.CommandLineArg1 = RanorexCmdLine[1].ToUpper();
                Global.CommandLineArg2 = RanorexCmdLine[2].ToUpper();
                Global.CommandLineArg3 = RanorexCmdLine[3].ToUpper();
                break;
            }

            // For debugging auto run
//			Global.CommandLineArg1 = "AUTO";
//			Global.CommandLineArg2 = "1";
//			Global.CommandLineArg3 = "3";

//			Report.Log(ReportLevel.Info, "CommandLineStuff",
//			           "\n" + "Arglen: " + Arguments + "\n" +
//			           "Zero: " + Global.CommandLineArg0 + "\n" +
//			           "One: " + Global.CommandLineArg1 + "\n" +
//			           "Two: " + Global.CommandLineArg2 + "\n" +
//			           "Three: " + Global.CommandLineArg3 + "\n"
//			           , new RecordItemIndex(0));
//			Thread.Sleep(10000);
//			Environment.Exit(0);

            // Onetime delay for Ranorex to setup instrumentation
            Thread.Sleep(5000);

            if (Global.CommandLineArg1 == "AUTO")
            {
                Global.AutoRun = true;
            }

            try
            {
                error = TestSuiteRunner.Run(typeof(Program), Environment.CommandLine);
            }
            catch (Exception e)
            {
                Report.Error("Unexpected exception occurred: " + e.ToString());
                error = -1;

                Global.LogText = "Unexpected exception occurred: " + e.ToString();
                WriteToLogFile.Run();
                Global.TempErrorString = Global.LogText;
                WriteToErrorFile.Run();
                Global.WavFilePath = "UnexpectedException.wav";
                PlayWavFile.Run();
                if (Global.DoRegisterSoundAlerts)
                {
                    Speech.Speak("Register " + Global.RegisterNumber);
                }
            }

            fnTearDown Teardown = new fnTearDown();

            Report.Log(ReportLevel.Info, "Main", "Starting Teardown", new RecordItemIndex(0));
            TestModuleRunner.Run(Teardown);
            Report.Log(ReportLevel.Info, "Main", "Teardown Finished", new RecordItemIndex(0));

            return(error);
        }
        public void ResumeTransaction()
        {
            Mouse.DefaultMoveTime        = 300;
            Keyboard.DefaultKeyPressTime = 100;
            Delay.SpeedFactor            = 1.0;

            Ranorex.Unknown element = null;

            RanorexRepository   repo              = new RanorexRepository();
            fnWriteToLogFile    WriteToLogFile    = new fnWriteToLogFile();
            fnTimeMinusOverhead TimeMinusOverhead = new fnTimeMinusOverhead();
            fnDumpStatsQ4       DumpStatsQ4       = new fnDumpStatsQ4();
            fnWriteToErrorFile  WriteToErrorFile  = new fnWriteToErrorFile();

            // Create new stopwatch
            Stopwatch MystopwatchTT = new Stopwatch();

            MystopwatchTT.Reset();
            MystopwatchTT.Start();

            Stopwatch MystopwatchQ4          = new Stopwatch();
            Stopwatch MystopwatchModuleTotal = new Stopwatch();

            MystopwatchModuleTotal.Reset();
            MystopwatchModuleTotal.Start();

            Global.LogText = @"Start Transaction";
            WriteToLogFile.Run();

            MystopwatchQ4.Reset();
            MystopwatchQ4.Start();

            if (Global.DomesticRegister)
            {
                Global.LogText = @"Clicking on ReTech screen then press F5";
                WriteToLogFile.Run();
                repo.ReTechStartTransaction.Click();
                repo.ReTechStartTransaction.PressKeys("{F6}");

                if (Host.Local.TryFindSingle(repo.GenericDialogView.CriticalErrorSavingTransactionCallHInfo.AbsolutePath.ToString(), out element))
                {
                    repo.GenericDialogView.ErrorSavingButtonOK.Click();
                    Thread.Sleep(200);
                    Global.TempErrorString = "Error Saving Transaction";
                    WriteToErrorFile.Run();
                    Global.LogText = Global.TempErrorString;
                    WriteToLogFile.Run();
                }

                Global.LogText = @"Waiting for logon";
                WriteToLogFile.Run();
                while (!Host.Local.TryFindSingle(repo.RetechLoginView.TxtPasswordInfo.AbsolutePath.ToString(), out element))
                {
                    Thread.Sleep(200);

                    if (Host.Local.TryFindSingle(repo.GenericDialogView.CriticalErrorSavingTransactionCallHInfo.AbsolutePath.ToString(), out element))
                    {
                        repo.GenericDialogView.ErrorSavingButtonOK.Click();
                        Thread.Sleep(200);
                        Global.TempErrorString = "Error Saving Transaction";
                        WriteToErrorFile.Run();
                        Global.LogText = Global.TempErrorString;
                        WriteToLogFile.Run();
                    }
                }
            }
            else
            {
                // Click on F5 POS Register - international
                repo.IPOSScreen.ContainerF7BackOffice.Click("32;55");
                Delay.Milliseconds(200);
                Keyboard.Press("{F5}");

                while (!repo.LogOn.InternationalLoginID.Enabled)
                {
                    Thread.Sleep(100);
                }

                repo.LogOn.InternationalLoginID.PressKeys("psu");
            }
            Global.TempFloat = (float)MystopwatchQ4.ElapsedMilliseconds / 1000;
            TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);               // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = @"[F6] Resume Transaction";
            Global.Module = "Log On";
            DumpStatsQ4.Run();

            // Enter Password
            MystopwatchQ4.Reset();
            MystopwatchQ4.Start();

            if (Global.DomesticRegister)
            {
                Global.LogText = @"Waiting for Password field enabled";
                WriteToLogFile.Run();
                while (!repo.ReTechLogonPassword.Enabled)
                {
                    Thread.Sleep(100);
                }
                Global.LogText = @"Entering password";
                WriteToLogFile.Run();
                repo.RetechLoginView.TxtPassword.PressKeys("advanced{Return}");

                // If no transactions found cancel and skip to next register so script will not stop
                if (Host.Local.TryFindSingle(repo.SelectSuspendedOrderView1.NoTransactionsHaveBeenSuspendedTodaInfo.AbsolutePath.ToString(), out element))
                {
                    repo.SelectSuspendedOrderView1.CancelCommand.Click();
                    Thread.Sleep(100);
                    Global.AbortScenario = true;
                }
                else
                {
                    // Wait for add line command 2/2/18
                    if (repo.SelectSuspendedOrderView.ResumeCommandInfo.Exists(5000))
                    {
                    }
                    while (!Host.Local.TryFindSingle(repo.SelectSuspendedOrderView.ResumeCommandInfo.AbsolutePath.ToString(), out element))
                    {
                        Thread.Sleep(200);
                    }                                                   // 1/31/18
                    repo.SelectSuspendedOrderView.ResumeCommand.Click();
                    Thread.Sleep(1000);

                    // If transaction service error - try reclicking on save button
                    if (Host.Local.TryFindSingle(repo.SelectSuspendedOrderView.ErrorMessageTxtInfo.AbsolutePath.ToString(), out element))
                    {
                        repo.SelectSuspendedOrderView.ResumeCommand.Click();
                    }

                    // If Customer Info then just skip by continue
                    if (Host.Local.TryFindSingle(repo.Retech.ContinueButtonCommand2Info.AbsolutePath.ToString(), out element))
                    {
                        repo.Retech.ContinueButtonCommand2.Click();
                        Thread.Sleep(100);
                    }

                    // If Continue click it
                    if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element))
                    {
                        repo.ContinueButtonCommand.Click();
                        Thread.Sleep(100);
                    }
                }
            }
            else
            {
                repo.LogOn.InternationalPassword.PressKeys("advanced{Return}");
                while (!repo.ReservationDeposit.EnterSerialNumber.Enabled)
                {
                    Thread.Sleep(100);
                }
                repo.ReservationDeposit.EnterSerialNumber.PressKeys("{Escape}");
            }

            TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);               // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = "Enter Password";
            Global.Module = "Log On";
            DumpStatsQ4.Run();

            TimeMinusOverhead.Run((float)MystopwatchModuleTotal.ElapsedMilliseconds);   // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = "Module Total Time";
            Global.Module = "Log On";
            DumpStatsQ4.Run();
        }
Пример #6
0
        /// <summary>
        /// Performs the playback of actions in this module.
        /// </summary>
        /// <remarks>You should not call this method directly, instead pass the module
        /// instance to the <see cref="TestModuleRunner.Run(ITestModule)"/> method
        /// that will in turn invoke this method.</remarks>
        void ITestModule.Run()
        {
            if (!Global.SwitchUploadOnly)
            {
                Mouse.DefaultMoveTime        = 300;
                Keyboard.DefaultKeyPressTime = 100;
                Delay.SpeedFactor            = 1.0;

                Global.PhoneNumbertype = "";                 // all types


                // Create the needed classes
                RanorexRepository  repo             = new RanorexRepository();
                fnGetEndTime       GetEndTime       = new fnGetEndTime();
                fnGetStartTime     GetStartTime     = new fnGetStartTime();
                fnPlayWavFile      PlayWavFile      = new fnPlayWavFile();
                fnWriteToLogFile   WriteToLogFile   = new fnWriteToLogFile();
                fnDumpStats        DumpStats        = new fnDumpStats();
                fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile();
                SpeechSynthesizer  Speech           = new SpeechSynthesizer();

                Global.LogFileIndentLevel++;
                Global.LogText = "IN fnDoScenarios";
                WriteToLogFile.Run();

                Global.CurrentIteration = 1;

                if (Global.TimeToStartExecution != "")
                {
                    Global.LogText = "Waiting for start time - IN fnDoScenarios: " + Global.TimeToStartExecution;
                    WriteToLogFile.Run();
                    Report.Log(ReportLevel.Info, "fnDoScenarios", "Waiting for start time: " + Global.TimeToStartExecution, new RecordItemIndex(0));

                    bool TimeToStart = false;
                    while (!TimeToStart)
                    {
                        System.DateTime DateTimeNow = System.DateTime.Now;
                        int             TimeUp      = System.DateTime.Compare(DateTimeNow, Convert.ToDateTime(Global.TimeToStartExecution));
                        if (TimeUp > 0)
                        {
                            TimeToStart = true;
                        }
                    }
                }

                Global.LoopingDone = false;
                while (!Global.LoopingDone)
                {
                    try
                    {
                        DoScenarioLooping();
                    }
                    catch (Exception e)
                    {
                        string sayString = "";
                        if (e.ToString().IndexOf("Thread was being aborted.") == -1)
                        {
                            sayString = e.ToString().Substring(0, 28);
                            Global.TempErrorString = "Ranorex Crashed Message: " + e.Message;
                            WriteToErrorFile.Run();
                            Global.WavFilePath = "RanorexCrashed.wav";
                            PlayWavFile.Run();

                            if (e.ToString().Contains("MemoryException"))
                            {
                                // Write out Tasklist to file in C:\PAL\Reports String.Empty
                                string TimeStampPart = System.DateTime.Now.ToString();
                                TimeStampPart = Regex.Replace(TimeStampPart, @"[/]", "-");
                                TimeStampPart = Regex.Replace(TimeStampPart, @"[:]", "-");
                                TimeStampPart = Regex.Replace(TimeStampPart, @"[ ]", "_");
                                TimeStampPart = "(" + TimeStampPart + ")";
                                string CsvFilename = "Tasklist_(" + Global.RegisterName + ")_" + TimeStampPart;

                                var proc = new Process
                                {
                                    StartInfo = new ProcessStartInfo
                                    {
                                        FileName               = Global.Register1DriveLetter + @":\PAL\Reports\GetTaskList.bat",
                                        Arguments              = CsvFilename,
                                        UseShellExecute        = false,
                                        RedirectStandardOutput = true,
                                        CreateNoWindow         = true,
                                        WorkingDirectory       = Global.Register1DriveLetter + @":\PAL\Reports\"
                                    }
                                };

                                proc.Start();
                            }
                            ;

                            //Report.Snapshot("/form[@controlname='frmWebBrowserHost']");

                            if (Global.DoRegisterSoundAlerts)
                            {
                                Speech.Speak(sayString);
                            }
                            Global.WavFilePath = "Error.wav";
                            PlayWavFile.Run(); PlayWavFile.Run(); PlayWavFile.Run(); PlayWavFile.Run();

                            string ErrorMessage;
                            ErrorMessage   = e.ToString();
                            Global.LogText = @ErrorMessage;
                            WriteToLogFile.Run();

                            MessageBox.Show(e.ToString(), "Ranorex has crashed");

                            fnTearDown Teardown = new fnTearDown();
                            Report.Log(ReportLevel.Info, "Main", "Starting Teardown", new RecordItemIndex(0));
                            TestModuleRunner.Run(Teardown);
                            Report.Log(ReportLevel.Info, "Main", "Teardown Finished", new RecordItemIndex(0));

                            Environment.Exit(0);
                        }
                    }
                }

                Global.LogText = "OUT fnDoScenarios";
                WriteToLogFile.Run();
                Global.LogFileIndentLevel--;
            }
        }
Пример #7
0
        public void Run()
        {
            Mouse.DefaultMoveTime        = 300;
            Keyboard.DefaultKeyPressTime = 100;
            Delay.SpeedFactor            = 1.0;

            Ranorex.Unknown    element          = null;
            RanorexRepository  repo             = new RanorexRepository();
            fnWriteToLogFile   WriteToLogFile   = new fnWriteToLogFile();
            fnBrowserGoHome    BrowserGoHome    = new fnBrowserGoHome();
            fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile();
            fnPlayWavFile      PlayWavFile      = new fnPlayWavFile();
            SpeechSynthesizer  Speech           = new SpeechSynthesizer();

            Global.LogFileIndentLevel++;
            Global.LogText = "IN fnWaitForBrowserToLoad";
            WriteToLogFile.Run();

            Global.POSBrowserFlush = false;

            Thread.Sleep(5000);

            int AttemptsCounter = 0;

            while (!repo.POSBrowserV25StorePortal.HomeF6.Enabled ||
                   !repo.StorePortal.QAPOSReCommerce.Enabled ||
                   !(repo.POSBrowserV25StorePortal.ProgressBar.Value == 100))
            {
                Thread.Sleep(100);

                double aaaa = repo.POSBrowserV25StorePortal.ProgressBar.Value;

                // Check for Oops Game Over
                Report.Log(ReportLevel.Info, "WaitStatus", "Ck Oops");
                if (Host.Local.TryFindSingle(repo.RecommerceTradeLink.OopsGameOverWhatYouWereAttemptingToDoInfo.AbsolutePath.ToString(), out element))
                {
                    AttemptsCounter++;
                    GlobalOverhead.Stopwatch.Start();
                    Global.TempErrorString = "Browser Oops Game Over - pressing home and retrying";
                    if (Global.DoRegisterSoundAlerts)
                    {
                        Speech.Speak(Global.TempErrorString + " try number " + AttemptsCounter.ToString());
                    }
                    WriteToErrorFile.Run();
                    Global.LogText = Global.TempErrorString;
                    WriteToLogFile.Run();
                    Global.WavFilePath = "BrowserOopsGameOver.wav	";
                    PlayWavFile.Run();
                    BrowserGoHome.Run();
                    GlobalOverhead.Stopwatch.Stop();
                }

                // Check for browser unavailable
                Report.Log(ReportLevel.Info, "WaitStatus", "Ck browser unavailable");
                if (Host.Local.TryFindSingle(repo.StorePortal.POSBrowsingIsCurrentlyUnavailableInfo.AbsolutePath.ToString(), out element))
                {
                    AttemptsCounter++;
                    GlobalOverhead.Stopwatch.Start();
                    Global.TempErrorString = "Browser Unavailable - try go home";
                    if (Global.DoRegisterSoundAlerts)
                    {
                        Speech.Speak(Global.TempErrorString + " try number " + AttemptsCounter.ToString());
                    }
                    WriteToErrorFile.Run();
                    Global.LogText = Global.TempErrorString;
                    WriteToLogFile.Run();
                    BrowserGoHome.Run();
                    GlobalOverhead.Stopwatch.Stop();
                }

                // Check for server error
                Report.Log(ReportLevel.Info, "WaitStatus", "Ck browser server error");
                if (Host.Local.TryFindSingle(repo.RecommerceTradeLink.ServerErrorInApplicationInfo.AbsolutePath.ToString(), out element))
                {
                    AttemptsCounter++;
                    GlobalOverhead.Stopwatch.Start();
                    Global.TempErrorString = "Browser Server Error In Application - try go home";
                    if (Global.DoRegisterSoundAlerts)
                    {
                        Speech.Speak(Global.TempErrorString + " try number " + AttemptsCounter.ToString());
                    }
                    WriteToErrorFile.Run();
                    Global.LogText = Global.TempErrorString;
                    WriteToLogFile.Run();
                    BrowserGoHome.Run();
                    GlobalOverhead.Stopwatch.Stop();
                }

                Report.Log(ReportLevel.Info, "WaitStatus", "look for recommerce link");
                if (!Host.Local.TryFindSingle(repo.StorePortal.QAPOSReCommerceInfo.AbsolutePath.ToString(), out element))
                {
                    if (AttemptsCounter > Global.MaxRetries)
                    {
                        Global.LogText = "Flushing wait for browser to load";
                        WriteToLogFile.Run();
                        Global.POSBrowserFlush = true;
                    }
                    else
                    {
                    }
                }
            }

            Global.LogText = "OUT fnWaitForBrowserToLoad";
            WriteToLogFile.Run();
            Global.LogFileIndentLevel--;
        }
        public void Run()
        {       //*****************Start  Scenario 35 - Retech - Simple One SKU pay with PURCC ******************
            Mouse.DefaultMoveTime        = 300;
            Keyboard.DefaultKeyPressTime = 100;
            Delay.SpeedFactor            = 1.0;

            Ranorex.Unknown element = null;
            Global.AbortScenario = false;

            // Uses same SKU and Customer for Scenarios 3, 4, and 5

            RanorexRepository        repo = new RanorexRepository();
            fnTimeMinusOverhead      TimeMinusOverhead      = new fnTimeMinusOverhead();
            fnDumpStatsQ4            DumpStatsQ4            = new fnDumpStatsQ4();
            fnWriteToLogFile         WriteToLogFile         = new fnWriteToLogFile();
            FnWriteOutStatsQ4Buffer  WriteOutStatsQ4Buffer  = new FnWriteOutStatsQ4Buffer();
            fnUpdatePALStatusMonitor UpdatePALStatusMonitor = new fnUpdatePALStatusMonitor();
            FnCheckout         Checkout         = new FnCheckout();
            fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile();
            FnEnterSKU         EnterSKU         = new FnEnterSKU();

            Global.CurrentScenario = 35;

            if (!Global.DoScenarioFlag[Global.CurrentScenario])
//            if(Global.CurrentScenario != 9999)
            {
                return;
            }

            Global.RetechScenariosPerformed++;
            UpdatePALStatusMonitor.Run();

            // Create new stopwatch
            Stopwatch MystopwatchTT = new Stopwatch();

            MystopwatchTT.Reset();
            MystopwatchTT.Start();

            Stopwatch MystopwatchTotal = new Stopwatch();

            MystopwatchTotal.Reset();
            MystopwatchTotal.Start();
            Stopwatch MystopwatchQ4          = new Stopwatch();
            Stopwatch MystopwatchModuleTotal = new Stopwatch();
            Stopwatch MystopwatchF1          = new Stopwatch();

            Global.LogText = @"---> fnDoScenario35 Iteration: " + Global.CurrentIteration;
            WriteToLogFile.Run();
            Report.Log(ReportLevel.Info, "Scenario 35 IN", "Iteration: " + Global.CurrentIteration, new RecordItemIndex(0));

            // Start

            MystopwatchModuleTotal.Reset();
            MystopwatchModuleTotal.Start();

            MystopwatchQ4.Reset();
            MystopwatchQ4.Start();

            Global.LogText = @"Start Transaction";
            WriteToLogFile.Run();

            // Click on start a transaction
            while (!Host.Local.TryFindSingle(repo.Retech.StartATransactionInfo.AbsolutePath.ToString(), out element))
            {
                Thread.Sleep(100);
            }
            repo.Retech.StartATransaction.Click();
            if (Host.Local.TryFindSingle(repo.GenericDialogView.CriticalErrorSavingTransactionCallHInfo.AbsolutePath.ToString(), out element))
            {
                repo.GenericDialogView.ErrorSavingButtonOK.Click();
                Thread.Sleep(200);
                Global.TempErrorString = "Error Saving Transaction";
                WriteToErrorFile.Run();
                Global.LogText = Global.TempErrorString;
                WriteToLogFile.Run();
            }
            MystopwatchF1.Reset();
            MystopwatchF1.Start();
            while (!Host.Local.TryFindSingle(repo.RetechLoginView.TxtPasswordInfo.AbsolutePath.ToString(), out element))
            {
                Thread.Sleep(100);
                if (MystopwatchF1.ElapsedMilliseconds > 1500)
                {
                    repo.Retech.StartATransaction.Click();
                    MystopwatchF1.Reset();
                    MystopwatchF1.Start();
                }
            }
            Global.TempFloat = (float)MystopwatchQ4.ElapsedMilliseconds / 1000;
            TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);               // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = @"[F5] Start Transaction";
            Global.Module = "Log On";
            DumpStatsQ4.Run();

            // Enter Password
            MystopwatchQ4.Reset();
            MystopwatchQ4.Start();
//            if(repo.RetechLoginView.UserId.TextValue == "")
//            {
//              repo.RetechLoginView.UserId.TextValue = "PSU";
//            }
            repo.RetechLoginView.TxtPassword.PressKeys("advanced{Return}");

            switch (Global.RetechVersion.Substring(0, 3))
            {
            case "5.6":
                while (!repo.Retech.LetsGetStarted_5_6_0_103.Visible)
                {
                    Thread.Sleep(100);
                }
                break;

            case "5.7":
                while (!repo.AddLineItemCommand.Enabled)
                {
                    Thread.Sleep(100);
                }
                break;

            default:
                while (!repo.AddLineItemCommand.Enabled)
                {
                    if (Host.Local.TryFindSingle(repo.ContinueButtonCommandInfo.AbsolutePath.ToString(), out element))
                    {
                        repo.ContinueButtonCommand.Click();
                    }
                    Thread.Sleep(100);
                }
                break;
            }

            TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);               // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = "Enter Password";
            Global.Module = "Log On";
            DumpStatsQ4.Run();

            TimeMinusOverhead.Run((float)MystopwatchModuleTotal.ElapsedMilliseconds);   // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = "Module Total Time";
            Global.Module = "Log On";
            DumpStatsQ4.Run();

            MystopwatchModuleTotal.Reset();
            MystopwatchModuleTotal.Start();

            Global.LogText = @"Add Item";
            WriteToLogFile.Run();

            // Press F1 add item
            Keyboard.Press("{F1}");
            while (!repo.AddItemText.Enabled)
            {
                Thread.Sleep(100);
            }
            // Enter SKU
            Global.CurrentSKU = Global.S4Sku1;
            EnterSKU.Run();

            // Press F1 add item
            Keyboard.Press("{F1}");
            while (!repo.AddItemText.Enabled)
            {
                Thread.Sleep(100);
            }
            // Enter SKU cost 1 penny
            Global.CurrentSKU = "644917";
            EnterSKU.Run();

            // Return the SKU
            MystopwatchQ4.Reset();
            MystopwatchQ4.Start();

            // Press returns
            repo.Retech.ReturnsF4.Click();
            Thread.Sleep(100);

            // select add item and add the SKU
            repo.AddLineItemCommand.Click();
            //Thread.Sleep(100);
            repo.AddItemText.TextValue = Global.S4Sku1;
            Keyboard.Press("{Enter}");

            // Select Defective for retrun reason
            repo.ReturnReason.Click("246;16");
            repo.Retech.ListItemGameStopOESOrdersItemsRetur.Click("153;6");
            repo.ReturnReason.PressKeys("{LControlKey down}{LMenu down}");
            repo.ReturnReason.PressKeys("{LMenu up}{LControlKey up}");
            repo.Retech.DataContextShowCheckoutViewCommand.Click("93;62");
            repo.Retech.DataContextShowCheckoutViewCommand.Click("95;56");

            //Click on Scan or select receipt and select no receipt
            repo.Retech.SelectReceipt.Click("369;20");
            repo.Retech.NoReceiptAvailableCommand.Click("265;11");
            repo.Retech.SelectReceipt.PressKeys("{LControlKey down}{LMenu down}");
            repo.Retech.SelectReceipt.PressKeys("{LControlKey up}{LMenu up}");

            // Press F5 continue
            Keyboard.Press("{F5}");

            TimeMinusOverhead.Run((float)MystopwatchQ4.ElapsedMilliseconds);               // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = "Enter Return";
            Global.Module = "Add Return";
            DumpStatsQ4.Run();


            // @#@#@# C H E C K O U T #@#@#@
            Global.PayWithMethod = "PURCC";
            Checkout.Run();

            TimeMinusOverhead.Run((float)MystopwatchTT.ElapsedMilliseconds);   // Subtract overhead and store in Global.Q4StatLine
            Global.CurrentMetricDesciption = @"Scenario 35";
            Global.Module = "Total Time";
            DumpStatsQ4.Run();

            // Write out metrics buffer
            WriteOutStatsQ4Buffer.Run();

            Global.LogText = "<--- fnDoScenario35 Iteration: " + Global.CurrentIteration;
            WriteToLogFile.Run();
            Report.Log(ReportLevel.Info, "Scenario 35 OUT", "Iteration: " + Global.CurrentIteration, new RecordItemIndex(0));

            Thread.Sleep(2000);

            // ***********End Scenario 35*****************
        }
Пример #9
0
        /// <summary>
        /// Performs the playback of actions in this module.
        /// </summary>
        /// <remarks>You should not call this method directly, instead pass the module
        /// instance to the <see cref="TestModuleRunner.Run(ITestModule)"/> method
        /// that will in turn invoke this method.</remarks>
        void ITestModule.Run()
        {
            if (!Global.SwitchUploadOnly)
            {
                Mouse.DefaultMoveTime        = 300;
                Keyboard.DefaultKeyPressTime = 100;
                Delay.SpeedFactor            = 1.0;

                RanorexRepository  repo             = new RanorexRepository();
                fnParseSwitches    ParseSwitches    = new fnParseSwitches();
                fnWriteToErrorFile WriteToErrorFile = new fnWriteToErrorFile();
                fnPlayWavFile      PlayWavFile      = new fnPlayWavFile();

                // Get default scenario list
                //	- use DefaultScenarioList.txt for all but last register
                //  - use DefaultScenarioListLastRegister.txt for the last register in a store
                string ListToUse        = "";
                string DefaultScenarios = "13,16,18,19,20,33,34,36,37,41,42,43,47";
//				if( Global.RegisterNumber == "4" || ( Global.RegisterName == "USA04285-3" )
//				  )
//					ListToUse = "DefaultScenarioListLastRegister.txt";
//				else
                ListToUse = "DefaultScenarioList.txt";

                try
                {
                    // Read in the default Scenario List from Register 1 \Ranorex Automation\DefaultScenarioList.txt
                    using (System.IO.StreamReader RegisterScenarioFileGet = new System.IO.StreamReader(Global.Register1DriveLetter + @":\" + Global.AutomationFileDirectory + @"\" + ListToUse))
                    {
                        DefaultScenarios = RegisterScenarioFileGet.ReadLine();
                        RegisterScenarioFileGet.Close();
                    }
                }
                catch
                {
                    // Write out default Scenario List to Register 1 \Ranorex Automation\DefaultScenarioList.txt
                    using (System.IO.StreamWriter RegisterScenarioFilePut = new System.IO.StreamWriter(Global.Register1DriveLetter + @":\" + Global.AutomationFileDirectory + @"\" + ListToUse))
                    {
                        RegisterScenarioFilePut.WriteLine(DefaultScenarios);
                        RegisterScenarioFilePut.Close();
                    }
                }


                string TextInput;
                string Prompt = "Enter list of scenarios like 3,5-7,/LX\n\n" +

                                "Back Office ---------------------------------------------------\n" +
                                "Scenario 13: eMail\n" +
                                "Scenario 14: Performance Dashboard\n" +
                                "Scenario 15: Performance Dashboard Loop without exiting\n" +
                                "Scenario 18: Transaction Journal\n" +
                                "Scenario 19: Cover Art\n" +
                                "Scenario 20: HR Workday Employee List\n" +
                                "Scenario 21: WIS Web-In-Store\n\n" +

                                "RETECH --------------------------------------------------------\n" +
                                "Scenario 16: Returns\n" +
                                "Scenario 33: Simple One SKU Cash\n" +
                                "Scenario 34: Simple One SKU Credit\n" +
                                "Scenario 36: Item Search\n" +
                                "Scenario 37: Reserve Pickup\n" +
                                "Scenario 38: Suspend Resume\n" +
                                "Scenario 41: GPG\n" +
                                "Scenario 42: PRP\n" +
                                "Scenario 43: Card Balance\n" +
                                "Scenario 47: Purchase 1 SKU with 5 trades and cach back\n\n" +

                                "Other --------------------------------------------------------\n" +
                                "Scenario 50: Dashboard data init (about 20 minutes)\n\n" +

                                "Switches: put comma in front of switches 2-4,7,/NXS\n" +
                                "    N=Phone Numbers NonLoyalty\n" +
                                "    L=Phone Numbers Loyalty\n" +
                                "    A=All Registers use all Phone Numbers\n" +
                                "    X=Skip Customer Lookup (NO 4,7,17,20-23,25)\n" +
                                "    M=Metrics file create when no save them\n" +
                                "    Q=Quit running when get error\n" +
                                "    S=Scenario 9 use 40 SKUs";

                if (Global.AutoRun)
                {
                    if (Global.CommandLineArg3 != "")
                    {
                        TextInput = Global.CommandLineArg3;
                    }
                    else
                    {
                        TextInput = DefaultScenarios;
                    }
                }
                else
                {
                    InputBoxResult BoxInput = InputBox.Show(Prompt, "Scenarios", DefaultScenarios);
                    if (BoxInput.ReturnCode == DialogResult.Cancel)
                    {
                        Environment.Exit(0);
                    }                                                                                           // Exit if cancel pressed
                    TextInput = BoxInput.Text.ToUpper();
                }

                // Write out default Scenario List to Register 1 \Ranorex Automation\DefaultScenarioList.txt
                using (System.IO.StreamWriter RegisterScenarioFilePut = new System.IO.StreamWriter(Global.Register1DriveLetter + @":\" + Global.AutomationFileDirectory + @"\" + ListToUse))
                {
                    RegisterScenarioFilePut.WriteLine(TextInput);
                    RegisterScenarioFilePut.Close();
                }


                // Remove all spaces from the input
                TextInput = TextInput.Replace(" ", System.String.Empty);

                // Set flag if just Scenario 32 is selected - it consumes card numbers - so cannot run as part of normal run
                if (TextInput == "32")
                {
                    Global.JustScenario32 = true;
                }

                // Clear the DoScenarioFlag array
                for (int Offset = 0; Offset <= Global.MaxScenarioNumber; Offset++)
                {
                    Global.DoScenarioFlag[Offset] = false;
                }

                string[] PromptItems = TextInput.Split(',');
                string   TempText;
                int      PromptItemsCount = PromptItems.Length;
                int      ParseOffset;
                for (ParseOffset = 0; ParseOffset <= PromptItemsCount - 1; ParseOffset++)
                {
                    TempText = PromptItems[ParseOffset];
                    ParseSwitches.Run(TempText);
                }

                // If you can connect to the PALDB then provide the option to upload the test.
                var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MetricsRepository"].ConnectionString);
                try
                {
                    Report.Log(ReportLevel.Info, "fnGetScenariosToRun", "Open connection to DB", new RecordItemIndex(0));
                    connection.Open();
                    connection.Close();
                    var mSystemInfo = new FnSystemInfo();
                    TestModuleRunner.Run(mSystemInfo);
                }
                catch (Exception e)
                {
                    Global.IsPerformanceTest = false;
                    Global.DBAvailable       = false;

                    string sayString = "";
                    if (e.ToString().IndexOf("Thread was being aborted.") == -1)
                    {
                        sayString = e.ToString().Substring(0, 28);
                        Global.TempErrorString = "Cannot connect to Metric DB: " + e.Message;
                        WriteToErrorFile.Run();
                        //MessageBox.Show(e.ToString(),Global.TempErrorString);
                    }
                }
            }
        }