Подтвердить что ты не робот

Как запустить JS-событие в селене?

Я использую синтаксис Selenium WebDriver. Я знаю, что в синтаксисе на основе сервера selenium вы можете запустить javascript-событие, выполнив:

Selenium selenium = new DefaultSelenium("localhost", server.getPort(),
            "*iexplore", "http://www.eviltester.com");
selenium.fireEvent("lteq30", "blur");

как я могу сделать то же самое в приложении, созданном с помощью WebDriver (например, FirefoxDriver)?

4b9b3361

Ответ 1

К сожалению, дизайнеры Selenium WebDriver явно решили не включать эту функциональность в Selenium 2.

Это намеренное решение не включать эту функцию в WebDriver, так как обычно это хак для работы с синтезированными событиями, а не вести себя правильно. Мы предпочли бы устранить эту потребность, поддержка родных событий, поэтому мы продолжим улучшать вперед. Пользователь никогда не будет запускать фокусное событие, они контроль формы. Это то, что должны делать ваши тесты.

С учетом сказанного вы можете выполнить любой код javascript, который вы хотите. Таким образом, вы должны посмотреть, как запускать события с помощью javascript. Взгляните на fooobar.com/questions/17397/... для вдохновения.

Затем вы можете сделать что-то вроде этого:

FirefoxDriver driver = new FirefoxDriver();
driver.ExecuteScript("[your fire event javascript code]");

Я уверен, что вы могли бы создать функцию обертки, чтобы в основном выполнить то же самое, что и fireEvent.

Ответ 2

Другое решение:

((JavascriptExecutor) driver).executeScript("return document.getElementById('element').blur()");