Ввод текста с использованием JavascriptExecutor - PullRequest
0 голосов
/ 10 мая 2019

Я использовал JavascriptExecutor вместо sendkeys для ввода текста в текстовое поле имени пользователя. Он печатает текст, но в консоли отображается исключение ниже.

Я пробовал использовать Chrome версии 74 с последним автономным сервером.

 System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
            WebDriver driver=new ChromeDriver();
            driver.get("https://www.apsrtconline.in/oprs-web/login/show.do");
            driver.manage().window().maximize();
            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
            WebElement ele=driver.findElement(By.name("userName"));
            JavascriptExecutor jse=(JavascriptExecutor) driver;
            jse.executeAsyncScript("arguments[0].value='Vinutha'", ele);
            driver.findElement(By.id("submitBtn")).click();

Я ожидаю, что тест пройден. Но есть исключение тайм-аута сценария.

Исключение в потоке "main" org.openqa.selenium.ScriptTimeoutException: тайм-аут сценария: результат не был получен за 30 секунд в строке jse.executeAsyncScript ("arguments [0] .value = 'Vinutha'", ele);

1 Ответ

1 голос
/ 10 мая 2019

Используйте взамен jse.executeScript или jse.executeAsyncScript. Я считаю, что executeAsyncScript используется в случае нескольких потоков. (Согласно моему пониманию от чтения документа Java) ..... Выполните асинхронный фрагмент JavaScript в контексте текущего выбранного фрейма или окна. В отличие от выполнения синхронного JavaScript, сценарии, выполняемые с помощью этого метода, должны явно сигнализировать о завершении, вызывая предоставленный обратный вызов. Этот обратный вызов всегда вводится в выполняемую функцию как последний аргумент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...