43
Developing for Selenium Grid Dima Kovalenko

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

Embed Size (px)

Citation preview

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