Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share...

43
Developing for Selenium Grid Dima Kovalenko

Transcript of Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share...

Page 1: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Developing for Selenium Grid

Dima Kovalenko

Page 2: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 3: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

What is Selenium Grid?

• Distribute• Parallelize• Share resources

Page 4: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 5: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Distribute

Page 6: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Distribute

• 1 computer vs many

Page 7: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 8: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 9: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Node Config JSON

Page 10: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 11: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Parallelize

Page 12: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 13: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Session ID

• Every test has a session unique session id– 3e6f47aa-16ec-4951-8c1f-3b17a4405247

• Session ID is only way to identify each test request

Page 14: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Share Resources

Page 15: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Share Resources

• Multiple teams can use same browsers• No need to purchase individual computers for

each team

Page 16: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Getting Source Code

• Git clone– https://github.com/SeleniumHQ/selenium

• Open with– Inteli J– Eclipse

Page 17: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Proxies

Page 18: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 19: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

DefaultRemoteProxy.java

• Passes commands from test• Interesting methods

• getNewSession()• beforeSession()• afterSession()• beforeCommand()• afterCommand()• beforeRelease()

Page 20: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Selenium Grid Extras

• Source Code– https://github.com/groupon/Selenium-Grid-Extras

Page 21: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Overwriting Default Proxy

Page 22: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Overwriting Default Proxy

Page 23: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Why video record?

Page 24: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 25: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 26: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 27: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Before Command

Page 28: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 29: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Adding New Proxy

• Command Line– “proxy” argument

• Config JSON

Page 30: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 31: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Special Note

• Proxy to use config is defined on the node• The HUB needs to be in class of the HUB• Runs only on HUB instance!• Multiple proxies

Page 32: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Prioritizers

• Default FIFO– First In, First Out

• Interface Class

Page 33: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 34: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Capability Matcher

Page 35: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Capability Matcher

• matches()– Returns bolean

Page 36: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 37: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Config JSON

Page 38: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Servlet

• Allows user to implement custom HTTP endpoints

• Can be any valid HTTP format– HTML– JSON– XML

Page 39: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 40: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 41: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.
Page 42: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Compiling into JARs

• Maven• Javac• Etc

Page 43: Developing for Selenium Grid Dima Kovalenko. What is Selenium Grid? Distribute Parallelize Share resources.

Classpath