コード例 #1
0
        public override bool ConfirmPayment()
        {
            var inlagdaFörBetalningXpath = "//*[@id='IKFMaster_MainPlaceHolder_updBundle']/div[1]/div/table[1]/tbody/tr";
            var godkännKnappXpath        = "//*[@id='IKFMaster_MainPlaceHolder_BTN_SEND']";
            ReadOnlyCollection <IWebElement> inlagdaFörBetalning = ChromeDriver.FindElements(By.XPath(inlagdaFörBetalningXpath));
            bool kanGodkänna = inlagdaFörBetalning.Count == 1;

            if (kanGodkänna)
            {
                ChromeDriver.FindElementByXPath(godkännKnappXpath).Click();

                Wait3Seconds.Until(x => x.Url == LandingPageAfterLoginUrl);
                var         skickaKnappXpath      = "//*[@id='IKFMaster_MainPlaceHolder_BTN_Send']";
                var         signeraXpath          = "//*[@id='IKFMaster_MainPlaceHolder_ucVerify_BTN_OK']";
                IWebElement skickaBetalningsKnapp = ChromeDriver.FindElement(By.XPath(skickaKnappXpath));
                skickaBetalningsKnapp.Click();

                Wait3Seconds.Until(ExpectedConditions.ElementIsVisible(By.XPath(signeraXpath)));
                IWebElement signeraKnapp = ChromeDriver.FindElement(By.XPath(signeraXpath));
                signeraKnapp.Click();

                Wait30Seconds.Until(x => x.Url == "xxx");

                return(true);
            }

            return(false);
        }
コード例 #2
0
        public override void CreatePayment(int amount, DateTime paymentDate, string bankgiroPostgiro, string ocrMessage, dynamic accounts)
        {
            var toAccountXpath      = "//*[@id='IKFMaster_MainPlaceHolder_A1']";
            var amountXpath         = "//*[@id='IKFMaster_MainPlaceHolder_A3']";
            var dateXpath           = "//*[@id='IKFMaster_MainPlaceHolder_A4']";
            var ocrRadioButtonXpath = "//*[@id='IKFMaster_MainPlaceHolder_OCR']";
            var messageXpath        = "//*[@id='IKFMaster_MainPlaceHolder_A5']";
            var ownNoteXpath        = "//*[@id='IKFMaster_MainPlaceHolder_A6']";
            var addPaymentXpath     = "//*[@id='IKFMaster_MainPlaceHolder_BTN_ADB']";

            Wait3Seconds.Until(x => x.FindElement(By.XPath(toAccountXpath)));

            IWebElement tillKonto    = ChromeDriver.FindElement(By.XPath(toAccountXpath));
            IWebElement belopp       = ChromeDriver.FindElement(By.XPath(amountXpath));
            IWebElement datum        = ChromeDriver.FindElement(By.XPath(dateXpath));
            IWebElement meddelande   = ChromeDriver.FindElement(By.XPath(messageXpath));
            IWebElement egenNotering = ChromeDriver.FindElement(By.XPath(ownNoteXpath));
            IWebElement addPayment   = ChromeDriver.FindElement(By.XPath(addPaymentXpath));

            belopp.SendKeys(amount.ToString());
            datum.SendKeys(paymentDate.ToString());
            tillKonto.SendKeys(bankgiroPostgiro);
            meddelande.SendKeys(ocrMessage);

            addPayment.Click();
        }
コード例 #3
0
        public override string Authenticate()
        {
            return(Policy.Handle <Exception>()
                   .WaitAndRetry(3, (int x) => TimeSpan.FromSeconds(1))
                   .Execute(() =>
            {
                NavigateToLoginPageUrl();
                string loginXpath = "//*[@id='login_button']";
                string imgXpath = "//*[@id='modalBody']/div/div[2]/qrcode/img";
                Wait3Seconds.Until(x => ExpectedConditions.ElementIsVisible(By.XPath(loginXpath)));
                IWebElement frånKonto = ChromeDriver.FindElement(By.XPath(loginXpath));
                frånKonto.Click();

                string imgSrc = "";
                Policy.Handle <Exception>()
                .WaitAndRetry(3, (int x) => TimeSpan.FromSeconds(0.5))
                .Execute(() =>
                {
                    IWebElement element = ChromeDriver.FindElementByXPath(imgXpath);
                    imgSrc = element.GetAttribute("src");
                });

                return $"<img alt='Scan me!' src='{imgSrc}' style='display: block;'>";
            }));
        }
コード例 #4
0
 public bool IsLoggedInPreCheck()
 {
     if (!LoggedInDuringSession)
     {
         return(false);
     }
     NavigateToLandingPageAfterLoginUrl();
     Wait3Seconds.Until(x => x.Url == LandingPageAfterLoginUrl);
     return(true);
 }
コード例 #5
0
        public List <dynamic> ListPayments()
        {
            var kommandeBetalningarXpath = "/html/body/form/table[8]";

            SeleniumHelper.WaitForDocumentReady(ChromeDriver);
            ChromeDriver.SwitchTo().DefaultContent();
            Wait3Seconds.Until(x => x.FindElement(By.TagName("iframe")));
            var         frame = ChromeDriver.SwitchTo().Frame(ChromeDriver.FindElement(By.TagName("iframe")));
            IWebElement kommandeBetalningarTable = frame.FindElement(By.XPath(kommandeBetalningarXpath));

            kommandeBetalningarTable = frame.FindElement(By.XPath(kommandeBetalningarXpath));
            var            kommandeBetalningarEfterRows = kommandeBetalningarTable.FindElements(By.TagName("tr")).Where(x => x.FindElements(By.TagName("td")).Count > 0).ToList();
            List <dynamic> tillagdaBetalningar          = new List <dynamic>();

            foreach (var item in kommandeBetalningarEfterRows)
            {
                var columns = item.FindElements(By.TagName("td")).Where(x => x.Text != "" && x.Text != " ").ToList();
                if (columns.Count < 5)
                {
                    continue;
                }

                var date       = DateTime.Parse(columns[0].Text);
                var reciever   = columns[1].Text;
                var account    = columns[2].Text;
                var amount     = Double.Parse(columns[3].Text);
                var ocrMessage = columns[4].Text;

                tillagdaBetalningar.Add(new
                {
                    Datum     = date,
                    Mottagare = reciever,
                    Konto     = account,
                    Belopp    = amount,
                    Ocr       = ocrMessage
                });
            }

            return(tillagdaBetalningar);
        }
コード例 #6
0
        public override string Authenticate()
        {
            Policy.Handle <Exception>()
            .WaitAndRetry(3, (int x) => TimeSpan.FromSeconds(1))
            .Execute(() =>
            {
                NavigateToLoginPageUrl();
                WebDriverWait wait = new WebDriverWait(ChromeDriver, TimeSpan.FromSeconds(10));

                wait.Until(ExpectedConditions.ElementIsVisible((By.ClassName("shb-form-field__input"))));
                IWebElement textElement = ChromeDriver.FindElement(By.ClassName("shb-form-field__input"));
                textElement.SendKeys(PersonalNumber);

                var button = ChromeDriver.FindElement(By.XPath("/html/body/inss-switch-app/div/inss-app/div/main/div[1]/div/div/div[2]/inss-mbidqr/div/div[1]/form/div/div/div/shb-button-primary/div/button"));
                button.Click();
                SeleniumHelper.WaitForDocumentReady(ChromeDriver);

                if (_isMobile)
                {
                    var xpath = "/html/body/inss-switch-app/div/inss-app/div/main/div[1]/div/div/div[2]/inss-mbidqr/div/div[1]/div[2]/div/div[2]/shb-button-primary/div/button";
                    button    = ChromeDriver.FindElement(By.XPath(xpath));
                    button.Click();
                    string url = GetBankIdUrl();
                }

                Wait3Seconds.Until(x => x.FindElement(By.ClassName("shb-inss-mbid__qr-container")));
            });


            IWebElement svgDivEl = ChromeDriver.FindElement(By.ClassName("shb-inss-mbid__qr-container"));
            IWebElement element  = svgDivEl.FindElement(By.TagName("svg"));
            string      contents = (string)((IJavaScriptExecutor)ChromeDriver).ExecuteScript("return arguments[0].innerHTML;", element);
            string      svg      = $"<svg shape-rendering=\"crispEdges\" height=\"200\" width=\"200\" viewBox=\"0 0 33 33\">{contents}</svg>";

            return(svg);
        }