Selenium WebDriver IE Отправка одного символа в нижнем регистре - PullRequest
0 голосов
/ 05 марта 2020

Я недавно перешел с Windows 7 на Windows 10 машину, и при запуске предыдущего тестового пакета модуля Cucumber, который работал нормально, у меня теперь возникают проблемы с SendKeys - что вызывает все тесты неожиданно потерпеть неудачу. SendKeys похоже отправляет первый символ строки как ToLower().

Пример:

string User = "ANALYSTUSER"

Я посылаю ключи как:

SendKeys(User) / SendKeys(User.ToUpper())

, и поле всегда заполняется как aNALYSTUSER!

Я откатил версию пакета / драйвера NuGet до последних 10 версий, и проблема все еще возникает. (Я также попробовал 64-разрядный драйвер.)

  1. Selenium.Support
  2. Selenium.WebDriver
  3. Selenium.WebDriver.IEDriver

Кто-нибудь имеет представление о том, что может вызвать это и что можно попробовать здесь?

1 Ответ

0 голосов
/ 06 марта 2020

Возможно, проблема связана с клиентской стороной вашего сайта JavaScript, она изменит введенное значение, я создал образец с использованием следующего кода, он хорошо работает на моей стороне. Вы можете попробовать:

    private const string URL = @"https://www.bing.com/";
    private const string IE_DRIVER_PATH = @"E:\webdriver\IEDriverServer_x64_3.14.0";  // where the Selenium IE webdriver EXE is.
    static void Main(string[] args)
    {
        InternetExplorerOptions opts = new InternetExplorerOptions() { IntroduceInstabilityByIgnoringProtectedModeSettings = true};
        using (var driver = new InternetExplorerDriver(IE_DRIVER_PATH, opts))
        {
            driver.Navigate().GoToUrl("https://www.bing.com/");   
            var element = driver.FindElementById("sb_form_q"); 
            element.SendKeys("WEBDRIVER"); 

            Console.ReadKey();
        }
    }

Кроме того, вы также можете попробовать выполнить скрипт для ввода значения, кода, как показано ниже.

    private const string URL = @"https://www.bing.com/";
    private const string IE_DRIVER_PATH = @"E:\webdriver\IEDriverServer_x64_3.14.0";  // where the Selenium IE webdriver EXE is.
    static void Main(string[] args)
    {
        InternetExplorerOptions opts = new InternetExplorerOptions() { IntroduceInstabilityByIgnoringProtectedModeSettings = true};
        using (var driver = new InternetExplorerDriver(IE_DRIVER_PATH, opts))
        {
            driver.Navigate().GoToUrl("https://www.bing.com/");  

            var element = driver.FindElementById("sb_form_q");
            var script = "document.getElementById('sb_form_q').value = 'webdriver';";

            IJavaScriptExecutor jse = (IJavaScriptExecutor)driver;
            jse.ExecuteScript(script, element);

            //element.SendKeys("webdriver");
            element.SendKeys(Keys.Enter);
        }
    }
...