SlideShare a Scribd company logo
A TA L E O F T W O T O O L S :
S E L E N I U M 4 & A P P I U M 2 . 0
M A N O J K U M A R K U M A R @ M A N O J 9 7 8 8
A G E N D A
• Selenium Architecture
• Selenium 4
• WebDriver API
• Relative Locators
• Chrome DevTools Protocol
• Selenium Grid
• Appium 2.0
Test Selenium Server Grid/Cloud Browser/Driver Browser
RELATIVE LOCATORS
SELENIUM 4.0
R E L AT I V E
L O C AT O R S
A friendly way of locating elements using terms that
users normally use,
• above
• below
• toLeftOf
• toRightOf
• near
It started with Sahi. Sahi had Relation APIs, which
are a lovely way of finding elements.
H O W D O E S
R E L AT I V E
L O C AT O R S W O R K ?
• Every element on the DOM has
clientBoundingRect – Relative Locators are based
on it.
•
Measured from the center-point of the client
bounding Rect
https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
CHROME DEVTOOLS
PROTOCOL
C H R O M E
D E V T O O L S
• The Chrome DevTools Protocol is developed to enable a
debugger inside Chromium-based browsers.
Selenium 4 now have native support for Chrome
DevTools Protocol through “DevTools” interface.
• This helps us getting Chrome Development properties
such as Application Cache, Fetch, Network, Performance,
Profiler, Resource Timing, Security and Target CDP
domains etc.
A U T H E N T I C A T I O N
• Selenium 4, offers a
mechanism to register a
username and password
that can be used to
authenticate against these
sites.
N E T W O R K
I N T E R C E P T I O N
Selenium 4 allows you to
stub out the backend of the
application, intercepting
network traffic in the test and
returning pre-canned
responses
S E L E N I U M
G R I D
G R I D
M O D E S
• Standalone
• Hub & Node
• Distributed
• Docker
Router
New
Session?
New Session
Queuer
Event Bus
Distributor
Session Map
Yes
No
New Session
Queue
Node
Requested
Capabilities
Node
Client
Error
No
Selenium 4 Grid Flow
G R A P H Q L Q U E R Y I N G
S U P P O R T F O R G R I D
4
• What You Ask Is What You Get.
• GraphQL is an API specification standard and an
Open-Source data query and manipulation
language.
• It has a server-side runtime fulfilling those queries
along with the data.
G R I D
O B S E R V A B I L I T Y
• Selenium server is
instrumented with tracing
using Open Telemetry.
• Every request to the server
is traced from start to end.
• Each trace consists of a
series of spans as a request
is executed within the
server.
https://github.com/manoj9788/tracing-selenium-grid
V I S U A L I Z AT I O N O F
J A E G E R T R A C E S
W E B D R I V E R B I D I
APPIUM 2.0
A P P I U M 2 . 0
V I S I O N
Decouple the drivers:
The code for these drivers will
no longer be bundled with the
main Appium server
Enable Driver Ecosystem
Decoupling helps users to look
at existing Appium drivers as a
template, anyone can create
their own custom drivers with a
minimum of extra code
Enable Plugin Ecosystem
Plugins let you add arbitrary
functionality before or after
Appium commands. Also
modify server.
A P P I U M 2 . 0
• Provide support for any app platform beyond Android and iOS
• Will expose common driver classes and functionality
• Make it easy for anyone write and share Appium drivers
• New drivers can be easily shared in different means like Git, Npm etc…
• New Drivers
• Roku (Smart TV app automation)
• KaiOS (feature phone app automation)
• ChromeOS/Chromebook
A P P I U M 2 . 0 I N S TA L L AT I O N
A P P I U M 2 . 0
• By default, Appium creates a hidden directory called .appium inside your user home
directory. But if you'd like to use a different directory, or if you want to keep multiple driver
repositories around, you can adjust this path by using one of these three command line
options (which are all aliases of the same behavior)
• For example, appium -ah /path/to/custom/appium/home driver install xcuitest.
R E F E R E N C E
S
• https://www.oreilly.com/library/view/distributed-
systems-
observability/9781492033431/ch04.html
• https://github.com/manoj9788/tracing-
selenium-grid
• https://www.jaegertracing.io/docs/1.17/getting-
started/
• https://www.headspin.io/blog/appium/first-look-
at-appium-2-0-and-new-drivers/
T H A N K Y O U
Manoj Kumar
@manoj9788

More Related Content

What's hot

Automated Test Framework with Cucumber
Automated Test Framework with CucumberAutomated Test Framework with Cucumber
Automated Test Framework with Cucumber
Ramesh Krishnan Ganesan
 
BDD with Cucumber
BDD with CucumberBDD with Cucumber
BDD with Cucumber
Knoldus Inc.
 
Selenium Presentation at Engineering Colleges
Selenium Presentation at Engineering CollegesSelenium Presentation at Engineering Colleges
Selenium Presentation at Engineering Colleges
Vijay Rangaiah
 
Testing microservices with rest assured
Testing microservices with rest assuredTesting microservices with rest assured
Testing microservices with rest assured
Kushan Shalindra Amarasiri - Technical QE Specialist
 
Cypress testing
Cypress testingCypress testing
Cypress testing
Vladyslav Romanchenko
 
Rest assured
Rest assuredRest assured
Rest assured
Varun Deshpande
 
Driving Pipeline Automation With Newman and the Postman API
Driving Pipeline Automation With Newman and the Postman APIDriving Pipeline Automation With Newman and the Postman API
Driving Pipeline Automation With Newman and the Postman API
Postman
 
Selenium with Cucumber
Selenium  with Cucumber Selenium  with Cucumber
Selenium with Cucumber
Knoldus Inc.
 
Selenium WebDriver training
Selenium WebDriver trainingSelenium WebDriver training
Selenium WebDriver training
Vijay Krishnan Ramaswamy
 
Webdriver io presentation
Webdriver io presentationWebdriver io presentation
Webdriver io presentation
João Nabais
 
Postman & API Testing by Amber Race
Postman & API Testing by Amber RacePostman & API Testing by Amber Race
Postman & API Testing by Amber Race
Postman
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
Knoldus Inc.
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
Ahmed M. Gomaa
 
What's new in selenium 4
What's new in selenium 4What's new in selenium 4
What's new in selenium 4
Knoldus Inc.
 
API Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+CucumberAPI Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+Cucumber
Knoldus Inc.
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
Ashok Kumar
 
Jmeter Performance Testing
Jmeter Performance TestingJmeter Performance Testing
Jmeter Performance Testing
Atul Pant
 
Performance testing jmeter
Performance testing jmeterPerformance testing jmeter
Performance testing jmeter
Bhojan Rajan
 
Cypress Testing.pptx
Cypress Testing.pptxCypress Testing.pptx
Cypress Testing.pptx
JasmeenShrestha
 
Appium: Automation for Mobile Apps
Appium: Automation for Mobile AppsAppium: Automation for Mobile Apps
Appium: Automation for Mobile Apps
Sauce Labs
 

What's hot (20)

Automated Test Framework with Cucumber
Automated Test Framework with CucumberAutomated Test Framework with Cucumber
Automated Test Framework with Cucumber
 
BDD with Cucumber
BDD with CucumberBDD with Cucumber
BDD with Cucumber
 
Selenium Presentation at Engineering Colleges
Selenium Presentation at Engineering CollegesSelenium Presentation at Engineering Colleges
Selenium Presentation at Engineering Colleges
 
Testing microservices with rest assured
Testing microservices with rest assuredTesting microservices with rest assured
Testing microservices with rest assured
 
Cypress testing
Cypress testingCypress testing
Cypress testing
 
Rest assured
Rest assuredRest assured
Rest assured
 
Driving Pipeline Automation With Newman and the Postman API
Driving Pipeline Automation With Newman and the Postman APIDriving Pipeline Automation With Newman and the Postman API
Driving Pipeline Automation With Newman and the Postman API
 
Selenium with Cucumber
Selenium  with Cucumber Selenium  with Cucumber
Selenium with Cucumber
 
Selenium WebDriver training
Selenium WebDriver trainingSelenium WebDriver training
Selenium WebDriver training
 
Webdriver io presentation
Webdriver io presentationWebdriver io presentation
Webdriver io presentation
 
Postman & API Testing by Amber Race
Postman & API Testing by Amber RacePostman & API Testing by Amber Race
Postman & API Testing by Amber Race
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
 
What's new in selenium 4
What's new in selenium 4What's new in selenium 4
What's new in selenium 4
 
API Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+CucumberAPI Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+Cucumber
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
 
Jmeter Performance Testing
Jmeter Performance TestingJmeter Performance Testing
Jmeter Performance Testing
 
Performance testing jmeter
Performance testing jmeterPerformance testing jmeter
Performance testing jmeter
 
Cypress Testing.pptx
Cypress Testing.pptxCypress Testing.pptx
Cypress Testing.pptx
 
Appium: Automation for Mobile Apps
Appium: Automation for Mobile AppsAppium: Automation for Mobile Apps
Appium: Automation for Mobile Apps
 

Similar to Selenium-4-and-appium-2

AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...
AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...
AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...
Amazon Web Services
 
Selenium
SeleniumSelenium
Selenium
abiramimaya
 
Appium.pptx
Appium.pptxAppium.pptx
Appium.pptx
SameerAlam82
 
Building CI/CD Pipelines for Serverless Applications - SRV302 - re:Invent 2017
Building CI/CD Pipelines for Serverless Applications - SRV302 - re:Invent 2017Building CI/CD Pipelines for Serverless Applications - SRV302 - re:Invent 2017
Building CI/CD Pipelines for Serverless Applications - SRV302 - re:Invent 2017
Amazon Web Services
 
Modern web application development with java ee 7
Modern web application development with java ee 7Modern web application development with java ee 7
Modern web application development with java ee 7
Shekhar Gulati
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Jeff Potts
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
Amazon Web Services
 
Free Mongo on OpenShift
Free Mongo on OpenShiftFree Mongo on OpenShift
Free Mongo on OpenShift
Steven Pousty
 
Top 10 dev ops tools (1)
Top 10 dev ops tools (1)Top 10 dev ops tools (1)
Top 10 dev ops tools (1)
yalini97
 
Implementing Microservices Security Patterns & Protocols with Spring
Implementing Microservices Security Patterns & Protocols with SpringImplementing Microservices Security Patterns & Protocols with Spring
Implementing Microservices Security Patterns & Protocols with Spring
VMware Tanzu
 
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache Felix
Marcel Offermans
 
Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinar
LibbySchulze
 
Rest API with Swagger and NodeJS
Rest API with Swagger and NodeJSRest API with Swagger and NodeJS
Rest API with Swagger and NodeJS
Luigi Saetta
 
Introduction to angular | Concepts and Environment setup
Introduction to angular | Concepts and Environment setupIntroduction to angular | Concepts and Environment setup
Introduction to angular | Concepts and Environment setup
Ansley Rodrigues
 
Top 10 DevOps tools for software development
 Top 10 DevOps tools for software development  Top 10 DevOps tools for software development
Top 10 DevOps tools for software development
Mobiloitte
 
Modern application development with oracle cloud sangam17
Modern application development with oracle cloud sangam17Modern application development with oracle cloud sangam17
Modern application development with oracle cloud sangam17
Vinay Kumar
 
Microservices Delivery Platform. Tips & Tricks
Microservices Delivery Platform. Tips & TricksMicroservices Delivery Platform. Tips & Tricks
Microservices Delivery Platform. Tips & Tricks
Andrey Trubitsyn
 
Api fundamentals
Api fundamentalsApi fundamentals
Api fundamentals
AgileDenver
 
Building the Eventbrite API Ecosystem
Building the Eventbrite API EcosystemBuilding the Eventbrite API Ecosystem
Building the Eventbrite API Ecosystem
Mitch Colleran
 
Introduction to selenium
Introduction to seleniumIntroduction to selenium
Introduction to selenium
Khaja Moiz Uddin
 

Similar to Selenium-4-and-appium-2 (20)

AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...
AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...
AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...
 
Selenium
SeleniumSelenium
Selenium
 
Appium.pptx
Appium.pptxAppium.pptx
Appium.pptx
 
Building CI/CD Pipelines for Serverless Applications - SRV302 - re:Invent 2017
Building CI/CD Pipelines for Serverless Applications - SRV302 - re:Invent 2017Building CI/CD Pipelines for Serverless Applications - SRV302 - re:Invent 2017
Building CI/CD Pipelines for Serverless Applications - SRV302 - re:Invent 2017
 
Modern web application development with java ee 7
Modern web application development with java ee 7Modern web application development with java ee 7
Modern web application development with java ee 7
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
Free Mongo on OpenShift
Free Mongo on OpenShiftFree Mongo on OpenShift
Free Mongo on OpenShift
 
Top 10 dev ops tools (1)
Top 10 dev ops tools (1)Top 10 dev ops tools (1)
Top 10 dev ops tools (1)
 
Implementing Microservices Security Patterns & Protocols with Spring
Implementing Microservices Security Patterns & Protocols with SpringImplementing Microservices Security Patterns & Protocols with Spring
Implementing Microservices Security Patterns & Protocols with Spring
 
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache Felix
 
Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinar
 
Rest API with Swagger and NodeJS
Rest API with Swagger and NodeJSRest API with Swagger and NodeJS
Rest API with Swagger and NodeJS
 
Introduction to angular | Concepts and Environment setup
Introduction to angular | Concepts and Environment setupIntroduction to angular | Concepts and Environment setup
Introduction to angular | Concepts and Environment setup
 
Top 10 DevOps tools for software development
 Top 10 DevOps tools for software development  Top 10 DevOps tools for software development
Top 10 DevOps tools for software development
 
Modern application development with oracle cloud sangam17
Modern application development with oracle cloud sangam17Modern application development with oracle cloud sangam17
Modern application development with oracle cloud sangam17
 
Microservices Delivery Platform. Tips & Tricks
Microservices Delivery Platform. Tips & TricksMicroservices Delivery Platform. Tips & Tricks
Microservices Delivery Platform. Tips & Tricks
 
Api fundamentals
Api fundamentalsApi fundamentals
Api fundamentals
 
Building the Eventbrite API Ecosystem
Building the Eventbrite API EcosystemBuilding the Eventbrite API Ecosystem
Building the Eventbrite API Ecosystem
 
Introduction to selenium
Introduction to seleniumIntroduction to selenium
Introduction to selenium
 

More from Manoj Kumar Kumar

Tips from the trenches Accessibility Testing
Tips from the trenches Accessibility TestingTips from the trenches Accessibility Testing
Tips from the trenches Accessibility Testing
Manoj Kumar Kumar
 
Observability: Distributed Tes environment
Observability: Distributed Tes environmentObservability: Distributed Tes environment
Observability: Distributed Tes environment
Manoj Kumar Kumar
 
GAAD-Deque-Accessibility-webinar
GAAD-Deque-Accessibility-webinarGAAD-Deque-Accessibility-webinar
GAAD-Deque-Accessibility-webinar
Manoj Kumar Kumar
 
Scaling your Automated Tests: Docker and Kubernetes
Scaling your Automated Tests: Docker and KubernetesScaling your Automated Tests: Docker and Kubernetes
Scaling your Automated Tests: Docker and Kubernetes
Manoj Kumar Kumar
 
Testing for Inclusive Web: Accessibility
Testing for Inclusive Web: AccessibilityTesting for Inclusive Web: Accessibility
Testing for Inclusive Web: Accessibility
Manoj Kumar Kumar
 
Mobile Automation with Appium
Mobile Automation with AppiumMobile Automation with Appium
Mobile Automation with Appium
Manoj Kumar Kumar
 
Automated-Testing-inside-containers
Automated-Testing-inside-containersAutomated-Testing-inside-containers
Automated-Testing-inside-containers
Manoj Kumar Kumar
 
Test Automation Infrastructure with Containers
Test Automation Infrastructure with ContainersTest Automation Infrastructure with Containers
Test Automation Infrastructure with Containers
Manoj Kumar Kumar
 
Automated-Accessibility-Testing
Automated-Accessibility-TestingAutomated-Accessibility-Testing
Automated-Accessibility-Testing
Manoj Kumar Kumar
 
Async webdriverjs
Async webdriverjsAsync webdriverjs
Async webdriverjs
Manoj Kumar Kumar
 
Automated Testing with Google Chrome - WebDriver- ChromeDriver
Automated Testing with Google Chrome - WebDriver- ChromeDriverAutomated Testing with Google Chrome - WebDriver- ChromeDriver
Automated Testing with Google Chrome - WebDriver- ChromeDriver
Manoj Kumar Kumar
 

More from Manoj Kumar Kumar (11)

Tips from the trenches Accessibility Testing
Tips from the trenches Accessibility TestingTips from the trenches Accessibility Testing
Tips from the trenches Accessibility Testing
 
Observability: Distributed Tes environment
Observability: Distributed Tes environmentObservability: Distributed Tes environment
Observability: Distributed Tes environment
 
GAAD-Deque-Accessibility-webinar
GAAD-Deque-Accessibility-webinarGAAD-Deque-Accessibility-webinar
GAAD-Deque-Accessibility-webinar
 
Scaling your Automated Tests: Docker and Kubernetes
Scaling your Automated Tests: Docker and KubernetesScaling your Automated Tests: Docker and Kubernetes
Scaling your Automated Tests: Docker and Kubernetes
 
Testing for Inclusive Web: Accessibility
Testing for Inclusive Web: AccessibilityTesting for Inclusive Web: Accessibility
Testing for Inclusive Web: Accessibility
 
Mobile Automation with Appium
Mobile Automation with AppiumMobile Automation with Appium
Mobile Automation with Appium
 
Automated-Testing-inside-containers
Automated-Testing-inside-containersAutomated-Testing-inside-containers
Automated-Testing-inside-containers
 
Test Automation Infrastructure with Containers
Test Automation Infrastructure with ContainersTest Automation Infrastructure with Containers
Test Automation Infrastructure with Containers
 
Automated-Accessibility-Testing
Automated-Accessibility-TestingAutomated-Accessibility-Testing
Automated-Accessibility-Testing
 
Async webdriverjs
Async webdriverjsAsync webdriverjs
Async webdriverjs
 
Automated Testing with Google Chrome - WebDriver- ChromeDriver
Automated Testing with Google Chrome - WebDriver- ChromeDriverAutomated Testing with Google Chrome - WebDriver- ChromeDriver
Automated Testing with Google Chrome - WebDriver- ChromeDriver
 

Recently uploaded

20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 

Recently uploaded (20)

20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 

Selenium-4-and-appium-2

  • 1. A TA L E O F T W O T O O L S : S E L E N I U M 4 & A P P I U M 2 . 0 M A N O J K U M A R K U M A R @ M A N O J 9 7 8 8
  • 2. A G E N D A • Selenium Architecture • Selenium 4 • WebDriver API • Relative Locators • Chrome DevTools Protocol • Selenium Grid • Appium 2.0
  • 3. Test Selenium Server Grid/Cloud Browser/Driver Browser
  • 6. R E L AT I V E L O C AT O R S A friendly way of locating elements using terms that users normally use, • above • below • toLeftOf • toRightOf • near It started with Sahi. Sahi had Relation APIs, which are a lovely way of finding elements.
  • 7. H O W D O E S R E L AT I V E L O C AT O R S W O R K ? • Every element on the DOM has clientBoundingRect – Relative Locators are based on it. • Measured from the center-point of the client bounding Rect https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
  • 9. C H R O M E D E V T O O L S • The Chrome DevTools Protocol is developed to enable a debugger inside Chromium-based browsers. Selenium 4 now have native support for Chrome DevTools Protocol through “DevTools” interface. • This helps us getting Chrome Development properties such as Application Cache, Fetch, Network, Performance, Profiler, Resource Timing, Security and Target CDP domains etc.
  • 10. A U T H E N T I C A T I O N • Selenium 4, offers a mechanism to register a username and password that can be used to authenticate against these sites.
  • 11. N E T W O R K I N T E R C E P T I O N Selenium 4 allows you to stub out the backend of the application, intercepting network traffic in the test and returning pre-canned responses
  • 12. S E L E N I U M G R I D
  • 13. G R I D M O D E S • Standalone • Hub & Node • Distributed • Docker
  • 14. Router New Session? New Session Queuer Event Bus Distributor Session Map Yes No New Session Queue Node Requested Capabilities Node Client Error No Selenium 4 Grid Flow
  • 15. G R A P H Q L Q U E R Y I N G S U P P O R T F O R G R I D 4 • What You Ask Is What You Get. • GraphQL is an API specification standard and an Open-Source data query and manipulation language. • It has a server-side runtime fulfilling those queries along with the data.
  • 16. G R I D O B S E R V A B I L I T Y • Selenium server is instrumented with tracing using Open Telemetry. • Every request to the server is traced from start to end. • Each trace consists of a series of spans as a request is executed within the server. https://github.com/manoj9788/tracing-selenium-grid
  • 17. V I S U A L I Z AT I O N O F J A E G E R T R A C E S
  • 18. W E B D R I V E R B I D I
  • 20. A P P I U M 2 . 0 V I S I O N Decouple the drivers: The code for these drivers will no longer be bundled with the main Appium server Enable Driver Ecosystem Decoupling helps users to look at existing Appium drivers as a template, anyone can create their own custom drivers with a minimum of extra code Enable Plugin Ecosystem Plugins let you add arbitrary functionality before or after Appium commands. Also modify server.
  • 21. A P P I U M 2 . 0 • Provide support for any app platform beyond Android and iOS • Will expose common driver classes and functionality • Make it easy for anyone write and share Appium drivers • New drivers can be easily shared in different means like Git, Npm etc… • New Drivers • Roku (Smart TV app automation) • KaiOS (feature phone app automation) • ChromeOS/Chromebook
  • 22. A P P I U M 2 . 0 I N S TA L L AT I O N
  • 23. A P P I U M 2 . 0 • By default, Appium creates a hidden directory called .appium inside your user home directory. But if you'd like to use a different directory, or if you want to keep multiple driver repositories around, you can adjust this path by using one of these three command line options (which are all aliases of the same behavior) • For example, appium -ah /path/to/custom/appium/home driver install xcuitest.
  • 24. R E F E R E N C E S • https://www.oreilly.com/library/view/distributed- systems- observability/9781492033431/ch04.html • https://github.com/manoj9788/tracing- selenium-grid • https://www.jaegertracing.io/docs/1.17/getting- started/ • https://www.headspin.io/blog/appium/first-look- at-appium-2-0-and-new-drivers/
  • 25. T H A N K Y O U Manoj Kumar @manoj9788

Editor's Notes

  1. You know, finding elements on a page can be really difficult. I've seen loads of people using very complicated XPATH expressions, and trying to figure out complex CSS selectors and things like that. There have been whole talks about the subject at SeleniumConf. Surely there must be a better way to do this? Think about how we describe where an element is on the page. Think about how you’d do this over the phone. You’d never talk about the raw DOM, “Ah, find the fifth DIV element nested inside the SPAN with an ‘id’ of ‘foo.’” You’d just never say that! Instead, think off a conversational way of telling elements where they are in the page - you’d say something like, “just find that thing above that image, and to the right of that link,” when talking about where things are located on the page. 
  2. You know, finding elements on a page can be really difficult. I've seen loads of people using very complicated XPATH expressions, and trying to figure out complex CSS selectors and things like that. There have been whole talks about the subject at SeleniumConf. Surely there must be a better way to do this? Think about how we describe where an element is on the page. Think about how you’d do this over the phone. You’d never talk about the raw DOM, “Ah, find the fifth DIV element nested inside the SPAN with an ‘id’ of ‘foo.’” You’d just never say that! Instead, think off a conversational way of telling elements where they are in the page - you’d say something like, “just find that thing above that image, and to the right of that link,” when talking about where things are located on the page. 
  3. It started with Sahi. Sahi had Relation APIs, which are a lovely way of finding elements.
  4. Right hand side of 1 is left of the left most edge of 2 The top edge of 2 is at the same level as the bottom-edge of 1 This means that 1 is above 2 and 2 is below 1
  5. One feature that people have been asking for since we started the project has been the ability to authenticate to a web site. Previously, you could do this by crafting the URL the browser went to properly, but this leaks credentials to any man-in-the-middle and leaves them in server logs, so browsers have slowly removed this piece of functionality. That’s unfortunate, since it’s something that we know people frequently need to do in their tests. In Selenium 4, we now offer a mechanism to register a username and password that can be used to authenticate against these sites.
  6. A common complaint of Selenium tests is that they’re slow and flaky. While the bindings to the browser are excellent, and fully described by the W3C WebDriver spec, it is true that any end-to-end test is likely to suffer more flakiness than a simple unit test—there are just more moving parts, and more possibilities for things to go wrong. One way to resolve this issue is to stub out the backend of the application, intercepting network traffic in the test and returning pre-canned responses. Tools such as mountebank make this easy for API testing. Wouldn’t it be nice if there was a similar tool for Selenium? With Selenium 4, we now provide a mechanism to do this, using the NetworkInterceptor (well, that’s what we call it in the Java bindings). Pass it your WebDriver instance, and it’ll be called every time the browser is about to make an HTTP request, allowing you to return almost anything you want. 
  7. Router faces the internet and take incoming traffic and figures out....where to send it.. If the request belongs to an existing session, the Router will send the session id to the Session Map, and the Session Map will return the Node where the session is running. After this, the Router will forward the request to the Node. If it is a new session request, the Router will forward it to the New Session Queuer, which will add it to the New Session Queue. Upon successfully adding the request to the queue, The New Session Queuer will trigger an event through the Event Bus. . The Distributor picks up this event and polls the queue. It now attempts to create a session If the requested capabilities do not exist in any of the registered Nodes, then the request is rejected immediately and the client receives a response. If the requested capabilities match the capabilities of any of Node slots, Distributor attempts to get the available slot. If all the slots are busy, the Distributor will ask the queuer to add the request to the front of the queue. The Distributor receives the request again after the request retry interval. It will attempt retries until the request is successful or has timed out. If request times out while retrying or adding to the front of the queue its rejected. After getting an available slot and session creation, the Distributor passes the new session response to the New Session Queuer via the Event Bus. The New Session Queuer will respond to the client when it receives the event.
  8. WebDriver BiDi The original WebDriver spec is designed to allow you to have the test running very remotely from the browser. So SauceLabs, BrowserStack services like that are easy to do, but also you can set up like an internal grid at work. Things like Puppeteer,  Cypress, Playwright, things like that. They assume that you're running locally and what they do is they hook into the browser debugging protocols. And the main difference between the browser debugging protocols and the WebDriver spec, there are many. The major one is that the browser can send events to your test, right? So when people say, oh my well, my test using Puppeteer is so much faster. What's actually happening is an event is coming from the browser. And they're saving 200 milliseconds, 100 milliseconds. Instead of polling for an update, they get the update coming straight to them.  Now, the problem with depending on a browser debugging protocol is obviously these things are designed for debugging browsers And so they change with every single release of the browser because there's no requirement for them to be stable API that people write code against. You want to be able to take the same APIs and apply them consistently between browsers. And so what we're doing with WebDriver BiDi is we are taking the lessons learned from that event-driven model where the browser can send events and you can send commands to the browser in a sort of bi-directional way.  So you can find an element using the current W3C WebDriver spec. And you can pass the element into WebDriver BiDi. And similarly, you could take a reference from WebDriver BiDi and you could use that in standard W3C WebDriver.
  9. The Webdriver protocol, as you can tell in the name, was originally designed for automating web browsers. And, you know, it’s already the case that Appium uses this same protocol to automate mobile applications. We simply extended it in a few ways and added some additional capabilities, but by and large, if you look at an Appium test script, it looks and reads very similar to a Selenium test script.
  10. Appium's platform drivers (the XCUITest driver, UiAutomator2 driver, Espresso driver, etc...) have very little in common with one another.  This decreases the size of an Appium install dramatically, and makes it so that you don't need to install drivers that you don't need to use. Plugins: So what are plugins? Plugins basically let you add arbitrary functionality before and/or after Appium Commands. So if you think about the findElement command you could write a plug-in that when the findElement command comes into Appium, instead of sending that command on to the typical driver, you do something else with it. Some good examples of this would be the Find Element by Image API or the Appium + Test AI Classifier.
  11. Npm install –g Appium@next Do Appium to show the list of errros Appium driver list Appium driver install uiautomator2
  12. https://github.com/appium/appium-plugins/tree/master/packages -ah to specify a directory to install Appium drivers appium server -ah /path/to/install/drivers driver install uiautomator2copy code to clipboard -ka or –keep-alive-timeout to specify the number of seconds the Appium server should apply as both the keep-alive timeout and the connection timeout for all requests. Defaults to 600 seconds. appium server -ka 800