コード例 #1
0
        public void Run(IBrowser browser, ManualResetEvent pauseEvent, PersonDetails personDetails)
        {
            browser.ClickElementWithCss($"[for='Sections_0_Questions_INC10_Answers_{personDetails.IsHIVPositive.ToYesNo()}']");
            browser.ClickElementWithCss($"[for='Sections_0_Questions_INC11_Answers_{personDetails.IsDiabetic.ToYesNo()}']");
            browser.ClickElementWithCss($"[for='Sections_0_Questions_INC12_Answers_{personDetails.HasHeartCondition.ToYesNo()}']");
            browser.ClickElementWithCss($"[for='Sections_0_Questions_INC13_Answers_{personDetails.HasStroke.ToYesNo()}']");

            browser.ClickElementWithCss("#nextPageButton");
            pauseEvent.WaitOne(Timeout.Infinite);

            if (!personDetails.IsHIVPositive && !personDetails.HasHeartCondition && !personDetails.HasStroke)
            {
                return;
            }

            if (personDetails.IsHIVPositive)
            {
                browser.SelectValueFromDropdown("#Sections_0_Questions_HIV_Answers_Select", personDetails.HIVCondition.ToString().ToLower());
            }

            if (personDetails.IsDiabetic)
            {
                browser.ClickElementWithCss($"[for='Sections_0_Questions_INC11a_Answers_{personDetails.IsGestationalDiabetes.ToYesNo()}']");
            }

            if (personDetails.HasHeartCondition)
            {
                var details = personDetails.HeartConditionDetails;

                details.HeartConditions.ToList().ForEach(condition =>
                {
                    browser.ClickElementWithCss("#questionCodeLv2 .selectize-control");
                    browser.WaitForJQueryProcessing(TimeSpan.FromSeconds(5000));
                    browser.FindElements(".selectize-dropdown-content div").Single(x => x.Text.Contains(condition.GetDescription())).Click();
                });
            }

            if (personDetails.HasStroke)
            {
                var details = personDetails.StrokeConditionDetails;

                details.StrokeConditions.ToList().ForEach(condition =>
                {
                    browser.ClickElementWithCss("#questionCodeSSH_2 .selectize-control");
                    browser.WaitForJQueryProcessing(TimeSpan.FromSeconds(5000));
                    browser.FindElements(".selectize-dropdown-content div").Single(x => x.Text.Contains(condition.GetDescription())).Click();
                });
            }

            browser.ClickElementWithCss("#appId");
            browser.ClickElementWithCss("#nextPageButton");
            pauseEvent.WaitOne(Timeout.Infinite);

            HandleSubsequentHIVPages(browser, pauseEvent, personDetails);
            HandleSubsequentDiabetesConditionPages(browser, pauseEvent, personDetails);
            HandleSubsequentHeartConditionPages(browser, pauseEvent, personDetails);
            HandleSubsequentStrokeConditionPages(browser, pauseEvent, personDetails);
        }
コード例 #2
0
        public void Run(IBrowser browser, ManualResetEvent manualResetEvent, PersonDetails personDetails)
        {
            browser.ClickElementWithCss($"[for='Sections_0_Questions_INC20_Answers_{personDetails.HadTreatmentOnHeart.ToYesNo()}']");
            browser.ClickElementWithCss($"[for='Sections_0_Questions_INC21_Answers_{personDetails.HadAsthma.ToYesNo()}']");
            browser.ClickElementWithCss($"[for='Sections_0_Questions_INC22_Answers_{personDetails.HadAnyLiverDisorder.ToYesNo()}']");

            browser.ClickElementWithCss("#nextPageButton");
            manualResetEvent.WaitOne(Timeout.Infinite);

            if (!personDetails.HadTreatmentOnHeart && !personDetails.HadAsthma && !personDetails.HadAnyLiverDisorder)
            {
                return;
            }

            if (personDetails.HadTreatmentOnHeart)
            {
                browser.ClickElementWithCss("#questionCodeNQ1_INC20 .selectize-control");
                browser.WaitForJQueryProcessing(TimeSpan.FromSeconds(500));
                browser.FindElements(".selectize-dropdown-content div").Single(x => x.Text.Contains(personDetails.HeartDisorder)).Click();
                browser.ClickElementWithCss("#questionCodeNQ1_INC20");
            }

            if (personDetails.HadAsthma)
            {
                browser.ClickElementWithCss("#questionCodeNQ1_INC21 .selectize-control");
                browser.WaitForJQueryProcessing(TimeSpan.FromSeconds(500));
                browser.FindElements(".selectize-dropdown-content div").Single(x => x.Text.Contains(personDetails.AsthmaDisorder)).Click();
                browser.ClickElementWithCss("#questionCodeNQ1_INC21");
            }

            if (personDetails.HadAnyLiverDisorder)
            {
                browser.ClickElementWithCss("#questionCodeNQ1_INC22 .selectize-control");
                browser.WaitForJQueryProcessing(TimeSpan.FromSeconds(500));
                browser.FindElements(".selectize-dropdown-content div").Single(x => x.Text.Contains(personDetails.LiverDisorder)).Click();
                browser.ClickElementWithCss("#questionCodeNQ1_INC22");
            }

            browser.ClickElementWithCss("#nextPageButton");
            manualResetEvent.WaitOne(Timeout.Infinite);

            if (personDetails.HeartDisorder == "Coronary artery disease")
            {
                browser.ClickElementWithCss("[for=Sections_0_Questions_HRUKCAD1_Answers_yes]");
                browser.ClickElementWithCss("#nextPageButton");
                manualResetEvent.WaitOne(Timeout.Infinite);
            }

            if (personDetails.AsthmaDisorder == "Asthma")
            {
                browser.ClickElementWithCss("[for=Sections_0_Questions_ASTH1_Answers_yes]");
                browser.ClickElementWithCss("#nextPageButton");
                manualResetEvent.WaitOne(Timeout.Infinite);
            }
        }
コード例 #3
0
        public void Run(IBrowser browser, ManualResetEvent manualResetEvent, PersonDetails personDetails)
        {
            browser.ClickElementWithCss($"[for='Sections_1_Questions_INC7_Answers_{personDetails.HasLivedInAfricaInLast2Years.ToYesNo()}']");
            browser.ClickElementWithCss($"[for='Sections_1_Questions_INC8_Answers_{personDetails.IntendToLiveOutsideOfUkInNext2Years.ToYesNo()}']");
            browser.ClickElementWithCss("#nextPageButton");

            if (personDetails.IntendToLiveOutsideOfUkInNext2Years)
            {
                browser.ClickElementWithCss($"[for='Sections_1_Questions_INC8_1_Answers_{personDetails.TravelInfo.KnowsWhichCountryTheyWillTravelTo.ToYesNo()}']");
                browser.ClickElementWithCss("#nextPageButton");

                if (personDetails.TravelInfo.KnowsWhichCountryTheyWillTravelTo)
                {
                    browser.ClickElementWithCss("[type='text']");
                    browser.FindElements(".option").Skip(TravelInfo.GetIndexOfCountry(personDetails.TravelInfo.Country)).First().Click();
                    browser.ClickElementWithCss("#INC8_1-answer");
                    browser.ClickElementWithCss("#nextPageButton");

                    browser.ClickElementWithCss($"[for='Sections_0_Questions_Grp1_1_Answers_{personDetails.TravelInfo.IntendToLiveInCountrySelected.ToYesNo()}']");
                    browser.ClickElementWithCss("#nextPageButton");
                }
            }

            manualResetEvent.WaitOne(Timeout.Infinite);
        }
コード例 #4
0
 public void Run(IBrowser browser, ManualResetEvent pauseEvent, PersonDetails personDetails)
 {
     browser.ClickElementWithCss(".selectize-control");
     browser.WaitForJQueryProcessing(TimeSpan.FromSeconds(5000));
     browser.FindElements(".selectize-dropdown-content div").ToList()[4].Click();
     browser.ClickElementWithCss("#Lv2-answer");
     browser.ClickElementWithCss("#nextPageButton");
     pauseEvent.WaitOne(Timeout.Infinite);
 }
コード例 #5
0
        public static void WaitForPageToLoad(this IBrowser browser, string timeout)
        {
            var timeoutSpan = TimeSpan.FromMilliseconds(double.Parse(timeout));

            try
            {
                if (browser.FindElements(By.XPath("//div[contains(@id,'atlProgress')")).Count > 0)
                {
                    browser.WaitForAjax(timeoutSpan);
                }
            }
            catch (InvalidOperationException e)
            {
                Trace.TraceInformation("Exception has been thrown but ignored as browser can be loading the page at that time: {0}", e);
            }
            browser.WaitForPageToLoad(timeoutSpan);
        }
コード例 #6
0
        public void Run(IBrowser browser, ManualResetEvent pausEvent, PersonDetails personDetails)
        {
            browser.ClickElementWithCss($"[for='Question_INC1_1_{personDetails.IsSmoker.ToYesNo()}']");
            browser.ClickElementWithCss($"[for='Question_INC1_2_{personDetails.HasUsedRecreationalInLast5Years.ToYesNo()}']");
            browser.ClickElementWithCss($"[for='Question_INC1_3_{personDetails.IsRegularDrinker.ToYesNo()}']");
            browser.ClickElementWithCss("#nextPageButton");
            pausEvent.WaitOne(Timeout.Infinite);

            if (personDetails.IsSmoker)
            {
                browser.ClickElementWithCss($"[for='Sections_0_Questions_Tob0_Answers_{personDetails.SmokerDetails.IsNicotineOnly.ToYesNo()}']");
                browser.ClickElementWithCss("#nextPageButton");
                pausEvent.WaitOne(Timeout.Infinite);

                if (!personDetails.SmokerDetails.IsNicotineOnly)
                {
                    browser.EnterTextIntoElement("#Sections_0__Questions_1__Answer", personDetails.SmokerDetails.NumberOfCigarettesADay.ToString());
                    browser.EnterTextIntoElement("#Sections_0__Questions_2__Answer", personDetails.SmokerDetails.NumberOfCigarsADay.ToString());
                    browser.EnterTextIntoElement("#Sections_0__Questions_3__Answer", personDetails.SmokerDetails.NumberOfPanatelasADay.ToString());
                    browser.EnterTextIntoElement("#Sections_0__Questions_4__Answer", personDetails.SmokerDetails.NumberOfGramsOfPipeTobacco.ToString());
                    browser.EnterTextIntoElement("#Sections_0__Questions_5__Answer", personDetails.SmokerDetails.NumberOfGramsOfChewingTobacco.ToString());
                    browser.ClickElementWithCss("#nextPageButton");
                    pausEvent.WaitOne(Timeout.Infinite);
                }
            }

            if (personDetails.HasUsedRecreationalInLast5Years)
            {
                personDetails.Drugs.ForEach(drug =>
                {
                    browser.ClickElementWithCss("#questionCodeDMR2 .selectize-control");
                    browser.WaitForJQueryProcessing(TimeSpan.FromSeconds(5000));
                    browser.FindElements(".selectize-dropdown-content div").Single(x => x.Text.Contains(drug)).Click();
                });

                browser.ClickElementWithCss(".sessioncamhidetext");

                if (personDetails.Drugs.Any())
                {
                    browser.ClickElementWithCss("#nextPageButton");
                    pausEvent.WaitOne(Timeout.Infinite);
                }

                if (personDetails.Drugs.Contains("Cannabis"))
                {
                    browser.EnterTextIntoElement("#Sections_1__Questions_0__Answer", personDetails.DaysSinceCannabisIntake.ToString());
                }

                if (personDetails.Drugs.Contains("Ecstasy, Speed, Cocaine, LSD") ||
                    personDetails.Drugs.Contains("Sedatives, Stimulants, Tranquilizers") ||
                    personDetails.Drugs.Contains("Anabolic Steroids"))
                {
                    browser.ClickElementWithCss($"#Sections_2_Questions_DM2_Answers_{personDetails.HasRequiredProfessionalCareForDrugs.ToYesNo()}");
                }

                if (personDetails.Drugs.Contains("Heroin, Methadone, Morphine"))
                {
                    browser.SelectValueFromDropdown("#Sections_3_Questions_DM5_Answers_Select", personDetails.WasItLessThan5YearsSinceHeroin ? "less" : "5");
                }

                browser.ClickElementWithCss("#nextPageButton");
                pausEvent.WaitOne(Timeout.Infinite);
            }

            if (personDetails.IsRegularDrinker)
            {
                browser.EnterTextIntoElement("#Sections_1__Questions_0__Answer", personDetails.PintsOfBeer.ToString());
                browser.EnterTextIntoElement("#Sections_1__Questions_1__Answer", personDetails.GlassesOfWine.ToString());
                browser.EnterTextIntoElement("#Sections_1__Questions_2__Answer", personDetails.NumberOfShots.ToString());
                browser.ClickElementWithCss("#nextPageButton");
                pausEvent.WaitOne(Timeout.Infinite);
            }
        }
コード例 #7
0
 public static IWebElement FindLabelFor(this IBrowser browser, IWebElement x)
 {
     return(browser.FindElements(WebDriverSelectors.LabelFor(x)).SingleOrDefault());
 }
コード例 #8
0
 public IEnumerable <IWebElement> FindElements(string cssSelector)
 {
     return(_browser.FindElements(cssSelector));
 }
コード例 #9
0
 public bool IsElementPresent(string locator)
 {
     // TODO: maybe wait some time when element is appeared
     return(_browser.FindElements(By.XPath(locator)).Count > 0);
 }
コード例 #10
0
        public void Run(IBrowser browser, ManualResetEvent manualResetEvent, PersonDetails personDetails)
        {
            browser.ClickElementWithCss($"[for='Sections_0_Questions_INC4_1_Answers_{personDetails.HasCancer.ToYesNo()}']");
            browser.ClickElementWithCss($"[for='Sections_0_Questions_INC4_2_Answers_{personDetails.HasMultipleSclerosis.ToYesNo()}']");
            browser.ClickElementWithCss($"[for='Sections_0_Questions_INC4_3_Answers_{personDetails.HasMentalIllness.ToYesNo()}']");

            browser.ClickElementWithCss("#nextPageButton");
            manualResetEvent.WaitOne(Timeout.Infinite);

            if (!personDetails.HasCancer && !personDetails.HasMultipleSclerosis)
            {
                return;
            }

            if (personDetails.HasCancer)
            {
                personDetails.CancerTypes.ForEach(condition =>
                {
                    browser.ClickElementWithCss("#questionCodeCLHD_2 .selectize-control");
                    browser.WaitForJQueryProcessing(TimeSpan.FromSeconds(5000));
                    browser.FindElements(".selectize-dropdown-content div").Single(x => x.Text.Contains(condition)).Click();
                });
            }

            if (personDetails.HasMultipleSclerosis)
            {
                personDetails.MultipleSclerosisConditions.ForEach(condition =>
                {
                    browser.ClickElementWithCss("#questionCodeMSONP_2 .selectize-control");
                    browser.WaitForJQueryProcessing(TimeSpan.FromSeconds(5000));
                    browser.FindElements(".selectize-dropdown-content div").Single(x => x.Text.Contains(condition)).Click();
                });
            }

            browser.ClickElementWithCss("#nextPageButton");
            manualResetEvent.WaitOne(Timeout.Infinite);

            if (personDetails.HasCancer)
            {
                browser.ClickElementWithCss($"[for='Sections_0_Questions_TUMOUR1_Answers_{personDetails.WaitingForCancerTreatment.ToYesNo()}']");
                browser.ClickElementWithCss("#nextPageButton");
                manualResetEvent.WaitOne(Timeout.Infinite);

                if (!personDetails.WaitingForCancerTreatment)
                {
                    browser.ClickElementWithCss($"[for='Sections_0_Questions_TUMOUR2_Answers_{personDetails.MalignantTumorOrGrowth.ToYesNo()}']");
                    browser.ClickElementWithCss("#nextPageButton");
                    manualResetEvent.WaitOne(Timeout.Infinite);

                    if (!personDetails.MalignantTumorOrGrowth)
                    {
                        browser.SelectValueFromDropdown("#Sections_0_Questions_TUMOUR3_Answers_Select", personDetails.DurationSinceGrowthDiagnosis);
                        browser.ClickElementWithCss("#nextPageButton");
                        manualResetEvent.WaitOne(Timeout.Infinite);

                        if (personDetails.DurationSinceGrowthDiagnosis == "5")
                        {
                            browser.ClickElementWithCss($"[for='Sections_0_Questions_TUMOUR4_Answers_{personDetails.CurrentlyOnTreatmentForTheTumour.ToYesNo()}']");
                            browser.ClickElementWithCss("#nextPageButton");
                            manualResetEvent.WaitOne(Timeout.Infinite);

                            if (!personDetails.CurrentlyOnTreatmentForTheTumour)
                            {
                                browser.SelectValueFromDropdown("#Sections_0_Questions_TUMOUR5_Answers_Select", personDetails.DurationSinceTumorTreatment);
                                browser.ClickElementWithCss("#nextPageButton");
                                manualResetEvent.WaitOne(Timeout.Infinite);
                            }
                        }
                    }
                }
            }
        }