Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fire JS event in selenium?

Tags:

java

selenium

I'm using selenium WebDriver syntax. I know, that in selenium server-based syntax, you can fire an javascript event by doing:

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

how do I do the same in an application, created with WebDriver (for example, FirefoxDriver)?

like image 758
Arsen Zahray Avatar asked Oct 08 '11 09:10

Arsen Zahray


People also ask

What is event firing WebDriver in Selenium?

EventFiringWebDriver is a JavaClass , basically it is a wrapper around an arbitrary WebDriver instance which supports registering of WebDriverEventListener .

Can Selenium interact with JavaScript?

You an use selenium to do automated testing of web apps or websites, or just automate the web browser. It can automate both the desktop browser and the mobile browser. Selenium webdriver can execute Javascript.


1 Answers

Unfortunately the Selenium WebDriver designers explicitly decided not to include this functionality in Selenium 2.

It's a deliberate decision to not include this feature in WebDriver, since it's usually a hack to work around synthesized events not behaving properly. We'd rather eliminate this need by providing great support for native events, so we'll continue improving that going forward. A user would never fire a focus event, they would click the form control. That's what your tests should be doing as well.

With that said, you can execute any javascript code you want. Thus you should look into how to fire events with javascript. Take at look at this StackOverflow question for inspiration.

Then you can do something like this:

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

I'm sure you could create a wrapper function to basically accomplish the same thing as fireEvent.

like image 139
prestomanifesto Avatar answered Nov 01 '22 16:11

prestomanifesto