TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node...
Transcript of TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node...
![Page 1: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/1.jpg)
TaaS - Test Automation as a Service
Oren Rubin
What have the cloud done for us lately?
![Page 2: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/2.jpg)
Testim.io CEO
Applitools Director of R&D
WixWeb Architect
Cadence Compiler Engineer
IBM Cloud Engineer
Google Developer ExpertOrenRubin
Mentor Google Launchpad
External LecturerTechnion University
Meetup Co-organizerSelenium-IL, GDG, Ember
...
![Page 3: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/3.jpg)
Testing Theory
La järɡən
![Page 4: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/4.jpg)
Testing Theory
La järɡən
● Scope
○ Unit○ Integration○ End to End
● Type
○ Functional○ Visual○ Performance○ Load○ Stress
● Accuracy
○ Smoke○ Acceptance○ Coverage
![Page 5: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/5.jpg)
Black Box
Check against an API
![Page 6: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/6.jpg)
White Box
Look inside
![Page 7: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/7.jpg)
BeholdThe Interweb!
So simple..
![Page 8: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/8.jpg)
So simple.. Not!
E2E Path of Requests and Cache Hierarchy
BeholdThe Interweb!
FRONT END BACK END
![Page 9: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/9.jpg)
Load/Stress Testing
![Page 10: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/10.jpg)
Why linear? Why not hard start/stop?
CommonScenario
![Page 11: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/11.jpg)
Metrics: CPU / Memory / Response
CommonScenario
![Page 12: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/12.jpg)
Response Metrics: Throughput, Average, Median, Deviation
CommonScenario
![Page 13: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/13.jpg)
Testing the Backend
![Page 14: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/14.jpg)
Number of Threads | Ramp-Up | Loop Count
JMeter
![Page 15: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/15.jpg)
JMeter in the Cloud
JMeterIn The Cloud
||Equivalent
![Page 16: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/16.jpg)
Why Front-End/E2E
Matters?
![Page 17: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/17.jpg)
Depends on the app
Front EndMatters
More Than Ever
![Page 18: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/18.jpg)
Who Moved My Code?
FRONT ENDBACK END FRONT ENDBACK END
1997 2017
![Page 19: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/19.jpg)
How to test Front End?
![Page 20: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/20.jpg)
Meet Selenium
![Page 21: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/21.jpg)
Many Languages
![Page 22: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/22.jpg)
Many OS
BrowsersAll major browsers
On all major (desktop) operating systems
![Page 23: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/23.jpg)
Can anyone suggest a good architecture?
![Page 24: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/24.jpg)
HTTP as a universal language
?TheWire
Protocol
Binding(SDK) Driver
![Page 25: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/25.jpg)
One (W3C) Standard to rule them all!
https://code.google.com/p/selenium/wiki/JsonWireProtocol http://www.w3.org/TR/webdriver/
![Page 26: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/26.jpg)
Selenium != Selenium IDE
![Page 27: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/27.jpg)
Meet Selenium's Hello World
Selenium
![Page 28: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/28.jpg)
Meet Selenium IDE
Why Record/Playback
Sucks
Unreliable, Unreadable, Uneditable
![Page 29: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/29.jpg)
Use Machine Learning to find elements
MeetTestim.io
![Page 30: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/30.jpg)
Selenium Grid
![Page 31: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/31.jpg)
new Chrome(); chromedriver.exe
Browser
HTTP Request
localhost:8989/click
driver = new Chrome();...submitBtn.click();
driver (Binding)
What We Want
![Page 32: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/32.jpg)
What We Want
new Chrome();
chromedriver.exe
Browser
HTTP Request
localhost:8989/click
driver = new Chrome();...submitBtn.click();
driver (Binding)
Machine 1 Machine 2
![Page 33: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/33.jpg)
java -jar selenium.jar -port 4444 -role hub
selenium hub
Node 0 on 10.0
Selenium Grid
![Page 34: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/34.jpg)
Selenium Grid
Node 1 on 10.1
Node 2 on 10.2
selenium node
java -jar selenium.jar -role webdriver -browser firefox -hubHost 10.0 –port 8989
java -jar selenium.jar -port 4444 -role hub
selenium node
java -jar selenium.jar -role webdriver -browser chrome -hubHost 10.0 –port 8989
selenium hub
Node 0 on 10.0
chromedriver.exe
firefox-webdriver.dpi
![Page 35: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/35.jpg)
Selenium Grid
driver (Binding)
new Chrome();
BrowserHTTP Request
10.0:4444/chrome
hub = new URL("10.0:4444/wd/hub")cap = new Capabilities ("chrome", "v3", "windows")driver = new RemoteWebDriver( hub, cap );...
my computer / CI server Node 2 on 10.2
selenium node
java -jar selenium.jar -role webdriver -hubHost 10.1 –port 8989
java -jar selenium.jar -port 4444 -role hub
selenium node
java -jar selenium.jar -role webdriver -hubHost 10.1 –port 8989
selenium hub
Node 0 on 10.0
HTTP Request
10.2:8989/chrome
chromedriver.exe
firefox-webdriver.dpi
Node 1 on 10.1
![Page 36: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/36.jpg)
Node 1 on 10.1
new Chrome();
BrowserHTTP Request
10.0:4444/click
driver = ...
submitBtn = driver.find(By.id("submit"));submitBtn.click();
driver
my computer / CI server Node 2 on 10.2
selenium node
java -jar selenium.jar -role webdriver -hubHost 10.1 –port 8989
java -jar selenium.jar -port 4444 -role hub
selenium node
java -jar selenium.jar -role webdriver -hubHost 10.1 –port 8989
selenium hub
Node 0 on 10.0
HTTP Request
10.2:8989/click
chromedriver.exe
firefox-webdriver.dpiSelenium Grid
![Page 37: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/37.jpg)
You need to get the drivers :(
?TheWire
Protocol
Binding(SDK) Driver
![Page 38: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/38.jpg)
Protractor to the rescue
> npm install -g > webdriver-manager
> webdriver-manager update
> webdriver-manager start
![Page 39: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/39.jpg)
Don't you lovedocker?
$ docker run -d -P --name selenium-hub selenium/hub:3.4.0-einsteinium
$ docker run -d --link selenium-hub:hub selenium/node-chrome:3.4.0-einsteinium$ docker run -d --link selenium-hub:hub selenium/node-firefox:3.4.0-einsteinium
![Page 40: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/40.jpg)
Load Balance
Selenium Grid works well for only 25 nodes
https://github.com/seleniumkit/gridrouter
![Page 41: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/41.jpg)
Selenium in the cloud
![Page 42: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/42.jpg)
Browsers in the cloud
SaaS Open Source
![Page 43: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/43.jpg)
Visual Validation
![Page 44: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/44.jpg)
Can you spot the differences?
![Page 45: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/45.jpg)
1 image is worth a 1000 assertions
![Page 46: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/46.jpg)
Pixels Matters
BTW, CSS is Crosscutting
![Page 47: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/47.jpg)
![Page 48: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/48.jpg)
![Page 49: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/49.jpg)
![Page 50: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/50.jpg)
![Page 51: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/51.jpg)
![Page 52: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989](https://reader035.fdocuments.net/reader035/viewer/2022062923/5f0a8d8c7e708231d42c32a7/html5/thumbnails/52.jpg)
Use Machine Learning to find elements
MeetTestim.io