/*
         * Enter text in the textbox
         */

        void IActionsVisitor.visitTextBox(ArcliteTextBox element, InputVal wanted)
        {
            string      text = wanted.getSelectedVal();
            IWebElement input;
            long        number     = 0;
            bool        canConvert = long.TryParse(text, out number);

            if (element._secondXPath == null)
            {
                try
                {
                    input = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(element.elementXPath)));
                    new ArcliteButton("", element.elementXPath).accept(this, new InputVal());
                }
                catch (WebDriverTimeoutException)
                {
                    input = driver.FindElement(By.XPath(element.elementXPath));
                }
            }
            else
            {
                input = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(element.elementXPath + wanted.valTwo + element._secondXPath)));
                new ArcliteButton("", element.elementXPath + wanted.valTwo + element._secondXPath).accept(this, new InputVal());
            }
            if (canConvert)
            {
                input.Clear();
                input.SendKeys(text);
            }
            else
            {
                driver.ExecuteJavaScript("arguments[0].value = '" + text + "';", input);
            }
        }
        /*
         * gets the value from a textbox
         */

        string IActionsVisitor.getValue(ArcliteTextBox textbox)
        {
            IWebElement input;

            try
            {
                input = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(textbox.elementXPath)));
            }
            catch (WebDriverTimeoutException)
            {
                input = driver.FindElement(By.XPath(textbox.elementXPath));
            }
            string res = input.GetAttribute("value");

            return(res);
        }
        /*
         * Enter text in a search box and clicks on search button if there is one
         */

        void IActionsVisitor.visitSearch(ArcliteSearch arcliteSearch, InputVal wanted)
        {
            if (arcliteSearch._searchButtonXpath == null)
            {
                IArcliteWebElement search = new ArcliteTextBox("", arcliteSearch._searchInputXPath);
                search.accept(this, wanted);
                IWebElement webElement;
                webElement = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(search.elementXPath)));
                webElement.SendKeys(Keys.Enter);
            }
            else
            {
                IArcliteWebElement search = new ArcliteTextBox("", arcliteSearch._searchInputXPath);
                search.accept(this, wanted);
                IArcliteWebElement confirm = new ArcliteButton("", arcliteSearch._searchButtonXpath);
                confirm.accept(this, new InputVal());
            }
        }