Selenium IEDriver sendkeys вводит точку с запятой вместо двоеточия - PullRequest
0 голосов
/ 27 июня 2019

Я использую IEDriver для запуска кода селена в IE (используя C #). Иногда при наборе строки json (это требуется моим тестированием) вместо двоеточия будет использоваться точка с запятой. Это происходит только в IE.

Когда я использую буфер обмена для вставки строки, он не заменяет двоеточие точкой с запятой. Однако мы хотим запустить тесты одновременно, поэтому использование буфера обмена не является поточно-ориентированным.

В настоящее время мы просто читаем то, что было напечатано, и если появляется точка с запятой, мы вводим заново. Но это занимает много времени, потому что, как вы все знаете, в IE

печатание происходит очень медленно
            wait.WaitForSendKeysText(Defaults_Textbox, Constants.TEN_SECONDS, rebuiltDefaultsJson);
            //this whole section here is a poor work around for IE..  we should move it into WaitForSendKeys at some point
            int i = 0;
            while (Defaults_Textbox.GetAttribute("value").Contains(";") && !rebuiltDefaultsJson.Contains(";"))
            {
                i++;
                FunctionalUtil.LogMessage("Semicolon Error in defaults box, retrying...");
                DefaultsSelect();
                DefaultsClear();
                wait.WaitForSendKeysText(Defaults_Textbox, Constants.TEN_SECONDS, rebuiltDefaultsJson);
                if (i==3)
                {
                    Assert.Fail("Tried 3 times to type a json block without a semicolon and it didnt work");
                }
            }
            FunctionalUtil.LogMessage("Connection information is entered Successfully");

public void WaitForSendKeysText(IWebElement element, int waitInSeconds, string text)
    {
        if (!string.IsNullOrEmpty(element.GetAttribute("value")))
        {
            element.Clear();
        }

        if(Utilities.useSeleniumGrid == "true" || Utilities.isMobile)
        {
            element.SendKeys(text);
            waitInSeconds = 60;
        }
        else
        {
            // The Clipboard is a shared resource and cannot be accessed safely in a multi-threaded setup
            Thread thread = new Thread(() => Clipboard.SetText(text));
            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
            thread.Join();
            element.SendKeys(OpenQA.Selenium.Keys.Control + "v");
        }
        ExplicitWaitForTextToBePresentInValue(element, waitInSeconds, text);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...