private IWebElement getElement(
            WebElementsFrom typeFrom,
            List <IWebElement> listOfElements,
            FindElementParameters searchType,
            string searchValue)
        {
            GetSeWebElementCommand cmdlet =
                WebDriverFactory.Container.Resolve <GetSeWebElementCommand>();

            cmdlet.Timeout = 1000;

            switch (searchType)
            {
            case FindElementParameters.ById:
                cmdlet.Id = searchValue;
                break;

            case FindElementParameters.ByClassName:
                cmdlet.ClassName = searchValue;
                break;

            case FindElementParameters.ByTagName:
                cmdlet.TagName = searchValue;
                break;

            case FindElementParameters.ByName:
                cmdlet.Name = searchValue;
                break;

            case FindElementParameters.ByLinkText:
                cmdlet.LinkText = searchValue;
                break;

            case FindElementParameters.ByPartialLinkText:
                cmdlet.PartialLinkText = searchValue;
                break;

            case FindElementParameters.ByCss:
                cmdlet.CssSelector = searchValue;
                break;

            case FindElementParameters.ByXPath:
                cmdlet.XPath = searchValue;
                break;

            case FindElementParameters.ByJavaScript:
                throw new Exception("JS! ... Invalid value for FindElementParameters");

            //break;
            default:
                throw new Exception("Invalid value for FindElementParameters");
            }

            IWebDriver  testDriver  = null;
            IWebElement testElement = null;

            if (WebElementsFrom.WebDriver == typeFrom)
            {
                testDriver =
                    WebDriverFactory.Container.Resolve <FakeWebDriver>();

                ((FakeWebDriver)testDriver).SetElementsCollection(listOfElements);

                cmdlet.InputObject = new object[] { testDriver };
            }
            else if (WebElementsFrom.WebElement == typeFrom)
            {
                testElement =
                    WebDriverFactory.Container.ResolveKeyed <FakeWebElement>(Constructors.FakeWebElementNoParameters);

                ((FakeWebElement)testElement).SetElementsCollection(listOfElements);

                cmdlet.InputObject = new object[] { testElement };
            }

            SeGetWebElementCommand command =
                new SeGetWebElementCommand(cmdlet);

            command.Execute();

            return((FakeRemoteWebElement)(object)PSTestLib.UnitTestOutput.LastOutput[0]);
        }
        private IWebElement getElement(
            WebElementsFrom typeFrom,
            List<IWebElement> listOfElements,
            FindElementParameters searchType,
            string searchValue)
        {
            GetSeWebElementCommand cmdlet =
                WebDriverFactory.Container.Resolve<GetSeWebElementCommand>();
            cmdlet.Timeout = 1000;

            switch (searchType) {
                case FindElementParameters.ById:
                    cmdlet.Id = searchValue;
                    break;
                case FindElementParameters.ByClassName:
                    cmdlet.ClassName = searchValue;
                    break;
                case FindElementParameters.ByTagName:
                    cmdlet.TagName = searchValue;
                    break;
                case FindElementParameters.ByName:
                    cmdlet.Name = searchValue;
                    break;
                case FindElementParameters.ByLinkText:
                    cmdlet.LinkText = searchValue;
                    break;
                case FindElementParameters.ByPartialLinkText:
                    cmdlet.PartialLinkText = searchValue;
                    break;
                case FindElementParameters.ByCSS:
                    cmdlet.CssSelector = searchValue;
                    break;
                case FindElementParameters.ByXPath:
                    cmdlet.XPath = searchValue;
                    break;
                case FindElementParameters.ByJavaScript:
                    throw new Exception("JS! ... Invalid value for FindElementParameters");
                    //break;
                default:
                    throw new Exception("Invalid value for FindElementParameters");
            }

            IWebDriver testDriver = null;
            IWebElement testElement = null;
            if (WebElementsFrom.WebDriver == typeFrom) {

                testDriver =
                    WebDriverFactory.Container.Resolve<FakeWebDriver>();

                ((FakeWebDriver)testDriver).SetElementsCollection(listOfElements);

                cmdlet.InputObject = new object[]{ testDriver };

            } else if (WebElementsFrom.WebElement == typeFrom) {

                testElement =
                    WebDriverFactory.Container.ResolveKeyed<FakeWebElement>(Constructors.FakeWebElement_NoParameters);

                ((FakeWebElement)testElement).SetElementsCollection(listOfElements);

                cmdlet.InputObject = new object[]{ testElement };

            }

            SeGetWebElementCommand command =
                new SeGetWebElementCommand(cmdlet);
            command.Execute();

            return ((FakeRemoteWebElement)(object)PSTestLib.UnitTestOutput.LastOutput[0]);
        }