
Explore how artificial intelligence forms human-like thinking, learns from vast data, and writes emails, poems, essays, and test cases, with real-world uses from Siri to self-driving cars.
Explore how human in the loop improves AI reliability in software testing and compare Postman versus SoapUI as practical tool examples.
Explore how large language models function as a human brain for AI, trained on vast data to understand language, translate, summarize, and generate images.
Explore generative AI and distinguish it from traditional AI by understanding how generative AI creates new content, including code, documents, images, audio, and video.
Explore LangChain, connecting LLMs to external data via a vector database through loading, chunking, embedding, and storage, and LangGraph's line graph for defining AI agents with memory and checkpoints.
Understand the model context protocol (MCP) and how it standardizes AI tool calls, including APIs and databases, as a universal adapter enabling reusable, scalable tool integration for AI agents.
Explore human in the loop concepts, guarding against AI hallucinations and implementing guardrails. Learn when to seek human approval, prompt engineering, and safety policies for AI agents.
Provide clear context to a language model to boost the accuracy of outputs in LMS. See how supplying specific information before tasks helps the model follow rules and produce results.
Explore zero-shot, one-shot, few-shot prompts and chain-of-thought reasoning to design accurate, context-rich prompts for automation testing with llms and context files.
Compare ChatGPT, Copilot, and Cursor for coding and automation testing; ChatGPT is a general-purpose AI, while Copilot and Cursor integrate with VSCode and generate code aligned to your framework.
Explore how OpenAI powers chatbots like ChatGPT and Copilot and its mission to benefit humanity. See how GPT models and DALL-E underlie these tools and the common principles OpenAI publishes.
Explore the basics of n8n as a workflow automation platform, create a trial account, and build AI-powered automation workflows using nodes and the try an AI workflow feature.
Create an OpenAI account, generate a new secret API key, and copy it to connect your AI agents to OpenAI for project use.
Create a workflow in n8n that reads a Google Sheet, selects an email, and sends an email via an AI agent using prompts to determine the recipient.
Create an n8n workflow that reads data from sheet two, checks if status is S, and sends background verification emails to each matched employee.
Learn to set up a Jira testing environment from scratch, including creating a project, generating API tokens, and integrating Zephyr test management to create test cases and defects from Excel.
Explore building an n8n workflow to pull new defects from a spreadsheet and create Jira issues, including setting up Jira templates, enabling Zephyr, and troubleshooting credentials and URLs.
Learn to expose an n8n workflow as a public chat, connect to an ai model with memory, and auto-create defects in zero from sheet data via a public URL.
Learn how tokens, the fundamental units of words and punctuation, drive OpenAI usage and cost, with four characters per token, prompts, budgets, and rate limits.
Learn to build a chrome extension that records and plays back browser actions, using an ai editor to generate Playwright or Selenium scripts and automate setup.
Build an otp shield mobile app that monitors text messages, phone calls, and whatsapp messages and calls, warns about otp requests, blocks apk files, and provides a dismiss option.
Explore gpt4all, a free open-source local ai ecosystem that runs offline on Windows, Mac, and Linux, enabling private document analysis and test case generation.
Learn to create an Azure DevOps account for testing, set up an organization and a project, and configure a pipeline to run Playwright-based automation tests.
Develop a custom manual test case generator agent that fetches an Azure DevOps user story, creates test cases by defined rules, and saves drafts in Excel.
Develop a python-based manual test case generator agent that fetches user story details from azure dev apps, prints title, description, and acceptance criteria, and saves ui mockups as screenshots.
Define rules to generate comprehensive manual test cases, including end-to-end journeys, negative and edge cases, with required expected results and P1/P2 priorities; present via a local Libby manual agent UI.
Get quick help through the questions tab with responses within 24 hours, and join weekend one-on-one sessions; request topics for a new student-requested topics section.
Explore Python's features as a general purpose, interactive, easy to learn language with a standard library and cross-platform support. See its versatility in data science, machine learning, and web development.
Install python on mac by downloading the installer from python.org, running it, and confirming installation. Verify with python3 --version and pip3 --version in terminal to ensure a successful setup.
Discover the course materials for Appium and Selenium with Python, including the complete Python project for Android and iOS, logs and object models, the APM framework, and documentation.
Explore PyCharm as the Python editor and IDE, learn its role with a code editor, debugger, and GUI, and follow steps to download, install on Windows or macOS, and launch.
Configure eclipse with pydev to enable python scripting; install pydev from the marketplace, restart the editor, switch to python perspective, configure the python interpreter, and create a python project.
Learn to install and login to GitHub Copilot in PyCharm, using the plugins marketplace, authorize GitHub, and access Copilot in the editor for AI code assistance.
Explore arithmetic operators, assignment operators, and comparison operators in Python, with practical examples of add, subtract, multiply, divide, and modulo; get a preview of logical operators.
Master Python logical operators, including and, or, not, and explore identity and membership operators is, is not, in, and not in through practical print examples.
Learn Python string basics: define strings with single, double, or triple quotes; index characters; and perform operations like concatenation, comparison, length, and methods such as upper and startswith.
Learn core Python list operations from scratch, including indexing, negative indexing, slicing, the in operator, counting, sorting, reversing, removing, popping, copying, extending, and merging lists.
Master Python sets with add, update for multiple values, and discard versus remove for deleting items. Explore pop, clear, membership tests, copy, and set operations like intersection and union.
Learn how Python tuples are immutable, access elements by index (including negative indices) and slicing, and convert tuples to lists to modify, then convert back to tuples with practical examples.
Learn how Python dictionaries store key-value pairs, emphasize that keys are immutable, access values by keys, delete items, and iterate with for loops and length checks.
Explore Python dictionaries, defining them in multiple lines or a single line, add and update key-value pairs, and remove with del, pop, or pop item, while exploring insertion order.
Explore how Python uses if statements to perform actions when conditions are met, with examples of indentation, else blocks, else if branches, nesting, and single-line conditional syntax.
Explore for loop usage in Python by iterating over lists and ranges, printing values, and adjusting start and stop indices to tailor iterations.
Explore functions versus methods, and build a single add function with arbitrary arguments, using a for loop in Python to sum numbers and return a tuple of results.
Master the scope of variables, differentiating local and global variables and using the global keyword inside functions to update global data. Understand access limitations and function call effects.
Understand how constructors initialize class variables and run automatically when creating objects. Learn to define __init__, use self to assign values, and access data in methods.
Explore the inheritance concept in Python, establishing relationships between parent and child classes. Learn single, multi-level, hierarchical, and multiple inheritance with examples and how properties propagate to subclasses.
Explore how method overriding lets a child class replace a parent method’s logic, as shown by overriding buy land with 2000 acres in a child class, illustrating inheritance in Python.
Learn how Python modules enable reusability by organizing functions into files and importing them with import or from ... import, and apply these ideas in playwright scripting.
Explore how Python lambda functions provide anonymous, single-expression operations as a shorter alternative to def, demonstrated by converting a sum function into a lambda and calling it with arguments.
Learn how Python handles exceptions with try and except blocks, using examples like zero division and index errors to continue program flow after errors.
Learn how try, else, and finally blocks handle exceptions in Python, including when else runs, how finally executes always, and patterns like closing a database connection.
Install and use Homebrew on Mac to simplify package management for your development VM. Use it to install node components and APM dependencies, as a prerequisite before configuring your environment.
Prepare prerequisites for Appium Python setup on Windows and Mac, including Node.js, Android Studio, PyCharm, and Xcode. Learn to verify installations and update environment variables via bash and jet profile.
Configure Appium Python by installing Android Studio and Xcode, then set up environment variables such as Android home, platform tools, tools, and Java home. Start practical implementation in PyCharm.
Install apm drivers and plugins to automate apps, set up ui automator 2 and xui test drivers, and install the inspector plugin for element identification using apm installer or commands.
Discover how Appium drivers for Android and iOS enable automation, compare 1.x desired capabilities with UIAutomator2 and XCUITest options, and pass platform, device, and app details.
Learn to connect a real Android phone to your laptop by enabling developer mode and USB debugging, using adb to recognize the device, and demoing with the visor app.
Links to download app files:
1. https://github.com/saucelabs/sample-app-mobile/releases
2. https://github.com/webdriverio/native-demo-app/releases
Identify the app package and app activity using an apk info app on Android, copy the activity name, and paste it into your automation project.
Create an Appium inspector session by configuring desired capabilities, including automation name, platform name, device name, platform version, and app path, to connect and inspect an Android device.
Install the APM inspector directly from official releases, with Mac DMG and Windows exe options. Launch from the desktop icon or via the plugin, and resolve macOS security prompts.
Create a new PyCharm project, add Appium Python bindings, and start the Appium server, configuring Android with UI Automator 2 and iOS with XE UI test.
Build a cross-platform mobile test using Python with Appium to launch Android and iOS apps by configuring device-specific desired capabilities, UIAutomator 2 or XCUITest options, and app paths.
Launch a native app with appium and Python from scratch, locate a button and text field via XPath, perform click and send keys, and manage sessions and basic synchronization.
Automate signup and login flows in a mobile app using Appium and Selenium with Python, locating elements via XPath, handling text fields, and managing alerts and confirmations.
Automate a mobile app with Appium and Python by handling a switch, a dropdown, and alerts in a single form. Locate elements with XPath and perform clicks and selections.
Clarify when to use XPath versus IDs in Appium with Python, prioritizing accessibility IDs, and demonstrate locating elements by accessibility ID, XPath, or ID for forms, switches, and dropdowns.
Learn to attach to an active Appium session using the inspector, enable session discovery, and view Android and iOS session details and capabilities.
Identify all dropdown options with find elements, iterate to read each text. Compare with the desired value, click the matching option, and break to close the dropdown using get attribute.
Perform a practical implementation to locate the sign-up button, capture x, y, width, height, and compute center coordinates as x+width/2 and y+height/2 for automated interaction.
import time
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions.pointer_input import PointerInput
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
desired_caps = dict(
deviceName = 'Android',
platformName = 'Android',
automationName = 'UiAutomator2',
platformVersion = '13',
app = '/Users/lucky/Downloads/app/Android/ApiDemos.apk'
# appActivity = 'com.swaglabsmobileapp.MainActivity'
)
capabilities_options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote('http://127.0.0.1:4723',options=capabilities_options)
time.sleep(5)
driver.implicitly_wait(40)
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'Views').click()
time.sleep(2)
ui_scrollable =('new UiScrollable(new UiSelector().scrollable(true))'
'.scrollIntoView(new UiSelector().text("WebView"))')
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,ui_scrollable)
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'WebView').click()
time.sleep(1)
driver.quit()
import time
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions.pointer_input import PointerInput
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
desired_caps = dict(
deviceName = 'Android',
platformName = 'Android',
automationName = 'UiAutomator2',
platformVersion = '13',
app = '/Users/lucky/Downloads/app/Android/ApiDemos.apk'
# appActivity = 'com.swaglabsmobileapp.MainActivity'
)
capabilities_options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote('http://127.0.0.1:4723',options=capabilities_options)
time.sleep(5)
driver.implicitly_wait(40)
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'Views').click()
time.sleep(2)
ui_scrollable =('new UiScrollable(new UiSelector().scrollable(true))'
'.setAsVerticalList()'
'.scrollIntoView(new UiSelector().text("Lists"))')
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,ui_scrollable)
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'Lists').click()
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'01. Array').click()
ui_scrollable1 =('new UiScrollable(new UiSelector().scrollable(true))'
'.scrollIntoView(new UiSelector().text("Curd"))')
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,ui_scrollable1)
time.sleep(1)
driver.quit()
import time
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions.pointer_input import PointerInput
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
desired_caps = dict(
deviceName = 'Android',
platformName = 'Android',
automationName = 'UiAutomator2',
platformVersion = '13',
app = '/Users/lucky/Downloads/app/Android/ApiDemos.apk'
# appActivity = 'com.swaglabsmobileapp.MainActivity'
)
capabilities_options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote('http://127.0.0.1:4723',options=capabilities_options)
time.sleep(5)
driver.implicitly_wait(40)
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'Views').click()
time.sleep(2)
ui_scrollable =('new UiScrollable(new UiSelector().scrollable(true))'
'.setAsVerticalList()'
'.scrollIntoView(new UiSelector().text("Tabs"))')
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,ui_scrollable)
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'Tabs').click()
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'5. Scrollable').click()
ui_scrollable1 =('new UiScrollable(new UiSelector().scrollable(true))'
'.setAsHorizontalList()'
'.scrollIntoView(new UiSelector().text("TAB 14"))')
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,ui_scrollable1)
time.sleep(1)
driver.quit()
import time
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions.pointer_input import PointerInput
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
desired_caps = dict(
deviceName = 'Android',
platformName = 'Android',
automationName = 'UiAutomator2',
platformVersion = '13',
app = '/Users/lucky/Downloads/app/Android/ApiDemos.apk'
# appActivity = 'com.swaglabsmobileapp.MainActivity'
)
capabilities_options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote('http://127.0.0.1:4723',options=capabilities_options)
time.sleep(5)
driver.implicitly_wait(40)
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'Views').click()
time.sleep(2)
ui_scrollable =('new UiScrollable(new UiSelector().scrollable(true))'
'.setAsVerticalList()'
'.scrollIntoView(new UiSelector().text("Lists"))')
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,ui_scrollable)
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'Lists').click()
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'01. Array').click()
ui_scrollable1 =('new UiScrollable(new UiSelector().scrollable(true))'
'.setMaxSearchSwipes(2)'
'.scrollIntoView(new UiSelector().text("Curd"))')
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,ui_scrollable1)
time.sleep(1)
driver.quit()
import time
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions.pointer_input import PointerInput
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
desired_caps = dict(
deviceName = 'Android',
platformName = 'Android',
automationName = 'UiAutomator2',
platformVersion = '13',
app = '/Users/lucky/Downloads/app/Android/ApiDemos.apk'
# appActivity = 'com.swaglabsmobileapp.MainActivity'
)
capabilities_options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote('http://127.0.0.1:4723',options=capabilities_options)
time.sleep(5)
driver.implicitly_wait(40)
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'Views').click()
time.sleep(2)
ui_scrollable =('new UiScrollable(new UiSelector().scrollable(true))'
'.scrollForward()')
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,ui_scrollable)
time.sleep(2)
ui_scrollable1 =('new UiScrollable(new UiSelector().scrollable(true))'
'.scrollBackward()')
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,ui_scrollable1)
time.sleep(1)
driver.quit()
import time
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions.pointer_input import PointerInput
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
desired_caps = dict(
deviceName = 'Android',
platformName = 'Android',
automationName = 'UiAutomator2',
platformVersion = '13',
app = '/Users/lucky/Downloads/app/Android/ApiDemos.apk'
# appActivity = 'com.swaglabsmobileapp.MainActivity'
)
capabilities_options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote('http://127.0.0.1:4723',options=capabilities_options)
time.sleep(5)
driver.implicitly_wait(40)
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'Views').click()
time.sleep(2)
ui_scrollable =('new UiScrollable(new UiSelector().scrollable(true))'
'.setAsVerticalList()'
'.scrollIntoView(new UiSelector().text("Lists"))')
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,ui_scrollable)
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'Lists').click()
driver.find_element(AppiumBy.ACCESSIBILITY_ID,'01. Array').click()
ui_scrollable1 =('new UiScrollable(new UiSelector().scrollable(true))'
'.scrollToEnd(5)')
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,ui_scrollable1)
time.sleep(2)
ui_scrollable2 =('new UiScrollable(new UiSelector().scrollable(true))'
'.scrollToBeginning(3)')
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,ui_scrollable2)
time.sleep(1)
driver.quit()
Master tab and click actions with the actions chain and touch actions, moving to the login button via XPath with pointer down and up, then long press on API demos.
apply explicit, implicit, and fluent waits in selenium with python, using WebDriverWait and expected_conditions to wait for an element located by XPath for up to 30 seconds, with optional time.sleep.
Start the APM server programmatically using an APM service, then stop it after execution. Verify the server is running and listening, and ensure the server terminates at the end.
Use the Appium inspector to record actions, identify elements, and generate code using coordinates for clicks and text entry, including tapping login and entering a username.
Learn how to automate system apps like the camera and calculator by configuring app package and app activity in your automation capabilities, using apk info to identify package and activity.
Automate a mobile web app by launching Chrome on a device, inspecting elements with Chrome inspect, and using Selenium to open Bing.com, locate by id, input text, and handle synchronization.
Discover the noReset option in Appium to preserve the app instance and previous session, avoiding the login screen and keeping cookies and login data intact.
Automate an end-to-end swag labs scenario using Python with Appium and Selenium, logging in, adding a product to the cart, filling the form, and completing checkout before logging out.
Learn how to capture the UDID of an iOS simulator in Xcode by selecting the simulator under manage run destinations and using the identifier in your automation scripts.
this optional lecture guides configuring the ios web driver agent on mac by opening the apm web driver agent folder and building integration app, lib, and runner with automatic signing.
Establish an Appium inspector session for the UIKitCatalog app on iPhone 16 by configuring the UDID, platform version, app location, and saved capabilities for quick future sessions.
demonstrates automating an iOS sign-up flow with Appium and Python, handling email and password text fields, a checkbox, and a sign-up button using accessibility IDs and XPath.
Learn to handle switches in a UI kit catalog app using Appium with Python, identifying switches by accessibility ID or XPath, tapping, waiting, and navigating back.
Master handling alerts in Appium with Python, using accessibility IDs to interact with alerts view, simple alerts, and text entry dialogs, including confirm, cancel, and destructive choices.
Automate a date picker in Appium and Selenium with Python, using accessibility IDs when available and XPath for dynamic elements to select dates and times.
Develop a dynamic date for a date picker by computing tomorrow's date with datetime and timedelta, then format it as Friday 11th April using strftime patterns.
Execute picker view automation with Appium by changing picker wheel values via accessibility id, using send keys, and tapping picker views to adjust red, green, and blue components.
Launch the Swaglabs app on an iPhone simulator, identify elements by accessibility ID, and automate the login flow with Appium and Python to complete an end-to-end test.
Automate mobile apps with Appium and Selenium using Python, overcoming header overlays. Identify elements by accessibility ID and XPath, and implement reliable tap operations for add to cart.
Automate an end-to-end SwagLabs scenario, including login, add to cart, checkout form with first name, last name, zip code, continue, scroll down, finish, back to home, and logout.
Switch from native to web view in iOS using Appium and Selenium with Python, detect web context, and interact with sign up and Google login via accessibility IDs and XPath.
Reuse a single Android and iOS scroll logic using screen coordinates and pointer-based action chain to perform scrolls, swipes, and taps in the UI Kit catalog app.
Establish a real iOS Appium inspector session by connecting a real iPhone, enabling developer mode, configuring web driver agent in Xcode, and starting the session to mirror the device.
Build the UI kit catalog app for a real iOS device, configure signing in Xcode, and start an Appium inspector session using the app’s .app path to connect.
Execute a Python automation script on a real iPhone by setting udid, platform version, and app info, then install, launch, and interact with the app on the device.
Configure Pi test in PyCharm, write basic test functions that start with test, and run them to execute login and logout tests as part of a Python unit testing workflow.
Explore how to create and use pytest markers to group, skip, and run specific tests, including defining custom markers in pytest.ini and applying parameterized data for login tests.
Explore hard versus soft assertions in PyTest, using assert to compare input and output, including custom failure messages; learn how to enable soft assertions with the Python soft assertions plugin.
Learn how to implement PyTest soft assertions alongside hard assertions by building a custom soft assertion class, collecting errors, and asserting at the end while interacting with alerts view.
Discover how to order pytest tests with a plugin. The lecture shows installing it in PyCharm and setting numeric or before/after orders for login, search, create, delete, logout, and edit.
Learn to generate html and allure reports from pytest by installing the pytest-html plugin, running tests with --html reports.html, and viewing the resulting formatted report.
Run pytest to generate json files and use allure to generate and serve detailed html reports from the allure directory.
Learn to attach screenshots to test reports and capture screenshots on failure using pytest with app launcher scripts, including failure-triggered fixtures and png attachments.
Explore parallel test execution on simulators using pytest fixtures and parameterization to run tests on two devices simultaneously, with separate Appium driver setups and ports via pytest-xdist.
Learn to detect and read qr code content in Python using OpenCV's qr code detector, decode the embedded url, and print the extracted data.
This lecture demonstrates implementing a page object model in Python, organizing page locators in dedicated classes, importing them into tests, and using data-driven sign up flows with a login page.
Explore how to set up and use GitHub for collaborative coding, including repositories, branches, initial commits, and syncing with PyCharm.
Build an Appium framework in python by organizing tests, page locators, and utilities into packages. Enable data driven testing with openpyxl and configparser, and parallel execution with pytest and allure.
Create a new login test by reusing the setup, teardown, and launcher logic, wire in the login page object with the Appium driver, and perform an alert interaction.
Learn to read the udid from a config.ini in an Appium test using a config reader, then pass it to your test to establish a device session.
learn to centralize login setup by moving the fixer from test.py to context.py, convert it to a pytest fixture, share driver via setup, and generate self-contained html reports with allure.
Learn to generate and validate html and allure reports using pytest, json outputs, and a reports folder, with no such element exceptions handled by try-except blocks.
Convert the sign up flow into the framework by defining page objects and locators, clicking sign up, filling the form, and running tests to verify signup.
Learn how to trigger a Python-based appium and selenium framework from Jenkins, configure plugins and python paths on mac and windows, and manage a custom workspace and build steps.
learn how to fix Jenkins integration for Appium and Selenium tests by using three lines of code to activate the environment, map the .jenkins folder, and run tests.
Learn to create Jenkins pipelines that chain demo, deployment, testing, and release builds with triggers, ensuring subsequent jobs run after successful predecessors, and visualize progress with a build pipeline view.
Learn how to generate Appium Python tests in PyCharm using Copilot, configure a UI test context, and craft precise locators and desired capabilities for mobile automation.
Leverage Copilot to generate Appium framework code in Python from a defined UI context, create page objects and tests, and align with the project structure for iOS and Android.
Generate Appium framework code using Copilot in Python to build and execute a mobile automation flow on an iPhone simulator, including app installation and alert views.
Configure python in vscode by installing the python extension, creating a folder and file, using copilot to populate it, setting python 3 as the executor, and running with code runner.
Learn how to convert a swag labs login page into a cross-platform page factory framework for Android and iOS using Python in VSCode, with platform key locators and end-to-end testing.
Update the configuration data to pull platform information from the OS, set Android version 13 and device name, remove udid for Android, and include app activity.
Develop an ai driven page factory framework to automate end-to-end android and ios swaglabs flows, leveraging copilot to generate page objects, login and cart pages, and test app launches.
Explore the Appium MCP overview: an ai-driven model context protocol that connects llm to Appium to control Android and iOS via natural language, with automatic UI element detection.
Configure an Appium mcp server in VS Code for GitHub Copilot by creating a .vscode/mcp.json, defining npx commands and android home environment, then reload and start the server.
Configure the apm mcp on the cursor editor by adding a custom mcp, specifying the apm mcp command and android home, and enabling the mcp for Python projects.
Install and configure cloud code cli to set up Appium MCP in VSCode, verify apm mcp, and connect to your organization cloud account with a light theme.
Learn to build an Appium MCP server in Python, install UV, set up a project, and define tools like create session, tap, text field, swipe, activate, terminate, and capture screenshot.
Configure the copilot-driven appium mcp server in Visual Studio Code by setting settings.json with the command and python path. Start the server and resolve issues for next session code generation.
Create and configure a custom appium mcp server to launch the swag labs app on an ios simulator using a udid, then interact with the login screen.
Demonstrate interacting with app UI using image-based commands: capture an element as an image, convert to base64, and use image to locate and click elements on Android and iOS apps.
Learn to use the get image similarity command to compare base64-encoded expected and actual images for visual testing, returning a 0.1–1.0 score via a Python function using OpenCV.
import time
import base64
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.common.by import By
def load_image_base64(path: str):
with open(path, "rb") as f:
return base64.b64encode(f.read()).decode("ascii")
def compare_image(driver):
try:
reference1 = load_image_base64(image_file_path1)
reference2 = load_image_base64(image_file_path2)
driver.find_image_occurrence(base64_partial_image=reference1, base64_full_image=reference2)
print("compare success")
except Exception as e:
print("compare failed")
desired_caps = dict(
deviceName = 'Android',
platformName = 'Android',
automationName = 'UiAutomator2',
platformVersion = '13',
app = '/Users/lucky/Downloads/AutomationTesting/src/test/resources/appfiles/Android.SauceLabs.Mobile.Sample.app.2.7.1.apk',
appActivity = 'com.swaglabsmobileapp.MainActivity'
)
capabilities_options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote('http://127.0.0.1:4723',options=capabilities_options)
time.sleep(3)
image_file_path1 = '/Users/lucky/Desktop/image3.png'
image_file_path2 = '/Users/lucky/Desktop/image4.png'
compare_image(driver)
time.sleep(3)
driver.quit()
Appium-device-farm : plugin:
Designed to manage and streamline the creation of driver sessions for android & iOS on real devices & emulators and making it idea for CI/CD pipeline
Usage:
Remotely manage sessions for devices
Monitor & manage test sessions
Enhanced session Management
Automated device recognition
Advanced reporting
Parallel test execution
Installation from Appium-installer
How to start Appium-server:
appium --keep-alive-timeout 800 --use-plugins=device-farm --base-path /wd/hub —plugin-device-farm-platform=android
appium server -ka 800 --use-plugins=device-farm -pa /wd/hub --plugin-device-farm-platform=android
http://appiumserverurl/device-farm
Enable server logs :
appium -ka 800 --use-plugins=device-farm -pa /wd/hub --plugin-device-farm-platform=iOS --log ./df1.log
Reset:
appium plugin run device-farm reset
Android Code:
import time
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.common.by import By
desired_caps = dict(
deviceName = 'Android',
platformName = 'Android',
automationName = 'UiAutomator2',
platformVersion = '13',
app = 'file-1753690680109.apk',
appActivity = 'com.wdiodemoapp.MainActivity'
)
capabilities_options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',options=capabilities_options)
time.sleep(3)
driver.find_element(By.XPATH,'//android.widget.Button[@content-desc="Forms"]/android.widget.TextView').click()
time.sleep(2)
driver.find_element(By.XPATH,'//android.widget.EditText[@content-desc="text-input"]').send_keys("12345")
time.sleep(3)
driver.quit()
# appium_service.stop()
iOS code:
import datetime
import time
from appium import webdriver
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.common.by import By
desired_caps = dict(
deviceName = 'iPhone',
platformName = 'iOS',
automationName = 'XCUITest',
platformVersion = '18.1',
# app = '/Users/lucky/Downloads/app/iOS/Verve.app',
app = '/Users/lucky/Library/Developer/Xcode/DerivedData/UIKitCatalog-cummyqhwpursfvfqelhxxzpuioie/Build/Products/Debug-iphonesimulator/UIKitCatalog.app',
udid = '2E3F1132-0B7C-41BD-A09A-8311B22EF112'
)
# appium_service = AppiumService()
# appium_service.start()
capabilities_options = XCUITestOptions().load_capabilities(desired_caps)
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',options=capabilities_options)
time.sleep(3)
driver.implicitly_wait(45)
# date picker
driver.find_element(AppiumBy.ACCESSIBILITY_ID,"Date Picker").click()
time.sleep(1)
driver.find_element(AppiumBy.XPATH,"(//*[@type='XCUIElementTypeButton'])[3]").click()
days = ["Monday", "Tuesday","Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
tomorrow = datetime.datetime.now() + datetime.timedelta(days=1)
print(tomorrow.date())
# print()
driver.find_element(AppiumBy.ACCESSIBILITY_ID,tomorrow.strftime("%A" + " %d" + " %B")).click()
time.sleep(1)
driver.find_element(AppiumBy.XPATH,"//XCUIElementTypeButton[@name='UIKitCatalog']").click()
time.sleep(3)
driver.quit()
# appium_service.stop()
npm install -g appim-doctor
Installation on MAC:
brew install ffmpeg
ffmpeg -version
windows:
https://www.ffmpeg.org/download.html
Select Windows
Select Windows builds from gyan.dev
Download ffmpeg-git-full.7z under latest git master branch build
Unzip it , place it in C drive n rename it
Launch CMD prompt as admin
setx /m PATH “/Users/lucky/Downloads/ffmpeg/bin;%PATH%”
ffmpeg -version
Android Code :
import time
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.common.by import By
desired_caps = dict(
deviceName = 'Android',
platformName = 'Android',
automationName = 'UiAutomator2',
platformVersion = '13',
app = '/Users/lucky/Downloads/app/Android/Android-NativeDemoApp-0.4.0.apk',
appActivity = 'com.wdiodemoapp.MainActivity',
)
capabilities_options = UiAutomator2Options().load_capabilities(desired_caps)
capabilities_options.set_capability("df:recordVideo",True)
capabilities_options.set_capability("df:build","Android Smoke 3 - 13.0")
# capabilities_options.set_capability("df:liveVideo",True)
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',options=capabilities_options)
time.sleep(3)
driver.find_element(By.XPATH,'//android.widget.Button[@content-desc="Forms"]/android.widget.TextView').click()
time.sleep(2)
driver.find_element(By.XPATH,'//android.widget.EditText[@content-desc="text-input"]').send_keys("12345")
time.sleep(3)
driver.quit()
# appium_service.stop()
iOS Code:
import datetime
import time
from appium import webdriver
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.common.by import By
desired_caps = dict(
deviceName = 'iPhone',
platformName = 'iOS',
automationName = 'XCUITest',
platformVersion = '18.1',
# app = '/Users/lucky/Downloads/app/iOS/Verve.app',
app = '/Users/lucky/Library/Developer/Xcode/DerivedData/UIKitCatalog-cummyqhwpursfvfqelhxxzpuioie/Build/Products/Debug-iphonesimulator/UIKitCatalog.app',
udid = '2E3F1132-0B7C-41BD-A09A-8311B22EF112'
)
# appium_service = AppiumService()
# appium_service.start()
capabilities_options = XCUITestOptions().load_capabilities(desired_caps)
capabilities_options.set_capability("df:recordVideo",True)
capabilities_options.set_capability("df:build","iOS Smoke 4 - 18.1")
# capabilities_options.set_capability("df:liveVideo",True)
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',options=capabilities_options)
time.sleep(3)
driver.implicitly_wait(45)
# date picker
driver.find_element(AppiumBy.ACCESSIBILITY_ID,"Date Picker").click()
time.sleep(1)
driver.find_element(AppiumBy.XPATH,"(//*[@type='XCUIElementTypeButton'])[3]").click()
days = ["Monday", "Tuesday","Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
tomorrow = datetime.datetime.now() + datetime.timedelta(days=1)
print(tomorrow.date())
# print()
driver.find_element(AppiumBy.ACCESSIBILITY_ID,tomorrow.strftime("%A" + " %d" + " %B")).click()
time.sleep(1)
driver.find_element(AppiumBy.XPATH,"//XCUIElementTypeButton[@name='UIKitCatalog']").click()
time.sleep(3)
driver.quit()
# appium_service.stop()
Android Code :
import time
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.common.by import By
desired_caps = dict(
deviceName = 'Android',
platformName = 'Android',
automationName = 'UiAutomator2',
platformVersion = '13',
app = '/Users/lucky/Downloads/app/Android/Android-NativeDemoApp-0.4.0.apk',
appActivity = 'com.wdiodemoapp.MainActivity',
)
capabilities_options = UiAutomator2Options().load_capabilities(desired_caps)
capabilities_options.set_capability("df:recordVideo",True)
capabilities_options.set_capability("df:build","Android Smoke 3 - 13.0")
# capabilities_options.set_capability("df:liveVideo",True)
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',options=capabilities_options)
time.sleep(3)
driver.find_element(By.XPATH,'//android.widget.Button[@content-desc="Forms"]/android.widget.TextView').click()
time.sleep(2)
driver.find_element(By.XPATH,'//android.widget.EditText[@content-desc="text-input"]').send_keys("12345")
time.sleep(3)
driver.quit()
# appium_service.stop()
iOS Code:
import datetime
import time
from appium import webdriver
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.common.by import By
desired_caps = dict(
deviceName = 'iPhone',
platformName = 'iOS',
automationName = 'XCUITest',
platformVersion = '18.1',
# app = '/Users/lucky/Downloads/app/iOS/Verve.app',
app = '/Users/lucky/Library/Developer/Xcode/DerivedData/UIKitCatalog-cummyqhwpursfvfqelhxxzpuioie/Build/Products/Debug-iphonesimulator/UIKitCatalog.app',
udid = '2E3F1132-0B7C-41BD-A09A-8311B22EF112'
)
# appium_service = AppiumService()
# appium_service.start()
capabilities_options = XCUITestOptions().load_capabilities(desired_caps)
capabilities_options.set_capability("df:recordVideo",True)
capabilities_options.set_capability("df:build","iOS Smoke 4 - 18.1")
# capabilities_options.set_capability("df:liveVideo",True)
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',options=capabilities_options)
time.sleep(3)
driver.implicitly_wait(45)
# date picker
driver.find_element(AppiumBy.ACCESSIBILITY_ID,"Date Picker").click()
time.sleep(1)
driver.find_element(AppiumBy.XPATH,"(//*[@type='XCUIElementTypeButton'])[3]").click()
days = ["Monday", "Tuesday","Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
tomorrow = datetime.datetime.now() + datetime.timedelta(days=1)
print(tomorrow.date())
# print()
driver.find_element(AppiumBy.ACCESSIBILITY_ID,tomorrow.strftime("%A" + " %d" + " %B")).click()
time.sleep(1)
driver.find_element(AppiumBy.XPATH,"//XCUIElementTypeButton[@name='UIKitCatalog']").click()
time.sleep(3)
driver.quit()
# appium_service.stop()
ElementID: this is mandatory whenever u r using mobile gesture commands
Swipe
Scroll
Longpress
drag
What is elementID: its a random hexadecimal code representing the element in the session which is returned by findByElement API
How can I find elementID??
Appium inspector
Can we use id from inspector in program directly???
17000000-0000-0000-1B10-000000000000
17000000-0000-0000-3016-000000000000
17000000-0000-0000-1817-000000000000
import time
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.common.by import By
desired_caps = dict(
deviceName = 'Android',
platformName = 'Android',
automationName = 'UiAutomator2',
platformVersion = '13',
app = '/Users/lucky/Downloads/app/Android/Android-NativeDemoApp-0.4.0.apk',
appActivity = 'com.wdiodemoapp.MainActivity'
)
capabilities_options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote('http://127.0.0.1:4723',options=capabilities_options)
time.sleep(3)
obj = driver.find_element(By.XPATH,'//android.widget.Button[@content-desc="Login"]/android.widget.TextView')
print(obj.id)
time.sleep(3)
driver.quit()
# appium_service.stop()
Learn to perform swipe up and swipe down gestures on iOS with Appium and Python, including element selection by label or accessibility id and validating the gestures on an iPhone.
Learn to implement swipe left and swipe right gestures in an iOS app using Appium with Python, configuring an APM inspector session, and updating locators with accessibility IDs and XPath.
Learn to perform double tap gestures on Android and iOS using the Appium gestures plugin, locating elements by accessibility id and applying double tap on the star and increment button.
import time
from appium import webdriver
from appium.options.ios import XCUITestOptions
from appium.webdriver.appium_service import AppiumService
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.common.by import By
desired_caps = dict(
deviceName = 'iPhone',
platformName = 'iOS',
automationName = 'XCUITest',
platformVersion = '18.1',
app = '/Users/lucky/Downloads/app/iOS/Verve.app',
# app = '/Users/lucky/Library/Developer/Xcode/DerivedData/UIKitCatalog-cummyqhwpursfvfqelhxxzpuioie/Build/Products/Debug-iphonesimulator/UIKitCatalog.app',
udid = '2E3F1132-0B7C-41BD-A09A-8311B22EF112'
)
# appium_service = AppiumService()
# appium_service.start()
capabilities_options = XCUITestOptions().load_capabilities(desired_caps)
# capabilities_options.set_capability("Plugins","gestures")
driver = webdriver.Remote('http://127.0.0.1:4723',options=capabilities_options)
time.sleep(10)
# driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value='Steppers').click()
list_view = driver.find_element(by=AppiumBy.XPATH, value='//XCUIElementTypeButton[@name="Sign up"]')
driver.execute_script('gesture: longPress',
{'elementId': list_view.id,
'duration': 8000,
'pressure':0.5})
time.sleep(9)
driver.quit()
# appium_service.stop()
Create and test tap gestures in Appium inspector's gestures tab by building move, pointer down, pause, and pointer up actions on screen coordinates, then export or import JSON for reuse.
Explore Appium Inspector gestures tab to perform a long press on a list item, selecting the element and applying a four-second press to reveal options.
Learn how to perform a double tap gesture in appium inspector's gesture tab to toggle a checkbox by simulating pointer down, wait, and pointer up.
Learn to perform scroll operations in Appium inspector using gestures tab, including move, pointer down, and pointer up to perform full scrolls across elements and date widgets, with adjustable speed.
Learn to perform swipe left and swipe right gestures with the Appium inspector across android and ios, using iphone capabilities and pointer down and up actions.
Learn how to use the Appium inspector recorder tab to perform tap and swipe gestures with coordinates, generating Python or Java (JUnit 4) code and copying or clearing actions.
Learn how Selenium automates web browser actions with Python, exploring core components—Selenium IDE, RC, WebDriver, and Selenium Grid—for open source cross-browser testing on real and virtual devices.
Learn to record and playback Selenium tests using Selenium IDE and Katalon recorder, including base URL setup, action capture, playback, and exporting to Python, Java, or JUnit.
Learn to create your first Selenium automation script in Python using PyCharm, install Selenium, configure Chrome and Gecko drivers, and launch a browser to navigate to a URL.
Learn how to identify web page objects with locators in Selenium, using id, class, or name, and when needed XPath or CSS selectors via HTML inspection.
Identify element properties via f12 inspect, copy default properties or create xpath, compare locators like css and xpath, and apply them in selenium python scripts or selenium ide recordings.
Explore how to use Selenium Python locators with WebDriver to identify elements by id, class name, css selector, link text, partial link text, tag name, and XPath, then perform actions.
Master Selenium Python automation by using locators to identify page properties, find elements by id and XPath, send keys to Bing search field, click the search button, and close browser.
Learn to automate radio button handling with Selenium Python by selecting the strict option on a test page, verifying status with is_selected, and applying the approach to similar inputs.
Learn to handle dropdowns in Selenium with Python using send keys or the Select class to pick by index, value, or visible text, and access all options.
Learn a selenium python scenario that uses a for loop to perform tab navigation on all bing.com links with send_keys Keys.TAB, and maximize the browser while printing link text.
Learn to handle frames in selenium python by switching to a frame with its class name, perform actions, and return to the main page with default content.
Master two Selenium Python techniques to select a date from a date picker: using send keys and clicking via link text or XPath. Learn to handle next-month navigation.
Learn to perform drag and drop in Selenium Python using action chains, with drag and drop by offset when destination is unknown, and ensure frame switching and correct driver instantiation.
Learn to capture an object's coordinates and size using Selenium Python, extracting x and y from location and height and width from size, with get_attribute usage for properties.
Explore handling drag and drop in Selenium Python from scratch, including resizable elements, draggable and droppable actions, and switching between offset and drag-and-drop commands with XPath-based element selection.
Learn to handle tooltips in Selenium Python by inspecting elements, switching frames, and using get_attribute('title') to print the tooltip message.
Master the Selenium Python mouseover operation using actions to move to elements, reveal options such as before you fly and travel information, and click the desired item with XPath.
Master handling multiple browser windows with Selenium Python by switching to new windows, switching frames, and locating elements by id or XPath in a Salesforce scenario.
learn to extract all rows from web tables using selenium with Python by building dynamic xpaths, iterating over rows, and retrieving tag name and description.
Master scenario 21 by handling alerts in Selenium Python with WebDriver: switch to the alert, retrieve text, enter data, and accept or dismiss.
Learn how to use JavaScript within Selenium Python to interact with web elements via driver.execute_script, including locating by id, entering text, and clicking search on Bing.
Learn data driven testing in Python by reading external Excel data with xlrd, opening the workbook and sheet, and iterating rows to feed inputs into Selenium tests.
Learn Python unittest and Selenium basics, focusing on setup and teardown to run multiple test cases with one browser instance, including login and create user.
Generate and share test execution reports for Selenium Python tests using html test runner or PyCharm reporting, detailing passed, failed, and total test results.
Learn how to implement the page object model in Python with Selenium by organizing login, home, and create user page properties into separate classes.
Learn how the page factory model extends the page object model by defining page properties in a class and implementing logic as methods, using a driver instance in tests.
Learn to set up git and GitHub, configure your environment, and push and share code in repositories for collaborative automation projects.
Configure Jenkins and create freestyle jobs to run Python unittest scripts automatically from a GitHub-integrated continuous integration workflow, trigger builds, view console output, and send email notifications.
Explore the complete course content, steps, and downloadable materials for Python-based Appium and Selenium projects, review test scripts and scenarios, and get answers via the questions tab.
This lecture explains how to use pytest markers to group, skip, and run specific tests, define custom markers in a pytest.ini, and implement parameterized tests with data-driven inputs.
Learn to define setup and teardown functions in pytest as preconditions and postconditions, and drive a Chrome browser with Selenium to log into the Sauce Demo application.
Convert the login test to a parameterized pytest test by returning two username and password pairs from a getdata method and running them against swag labs.
Learn to generate html and allure reports for selenium tests using pytest. Install pytest-html, run tests to produce reports.html, and configure Allure to generate and serve detailed Allure reports.
Explore parallel execution of pytest-based selenium and appium tests by using a fixture with parameterization to launch chrome and safari concurrently, demonstrating two-thread runs.
** Complete Python path: Selenium (Web) + Appium 3 (Mobile) from scratch with projects **
Learn Appium and Selenium automation using Python — Selenium WebDriver for web testing, Appium 3 for Android & iOS mobile testing, Pytest frameworks, Page Object Model, and real projects.
This Appium and Selenium Python course is built for manual testers, beginners, and QA engineers who want one practical path covering web + mobile automation with Python.
What you will learn in this course:
- Python programming fundamentals required for automation
- Selenium WebDriver basics and advanced web automation
- Locators, waits, assertions, and real website scenarios
- Pytest framework for Selenium
- Appium 3 features, setup, and configuration
- Android and iOS mobile automation with Appium Python
- Pytest framework for Appium and Page Factory / Page Object patterns
- Framework design, plugins, and project-based practice
- AI-assisted concepts for modern Python automation workflows
Keywords covered in this course:
Appium Python, Selenium Python, Appium 3, Selenium WebDriver, Appium mobile automation, Selenium automation testing, Python automation testing, Pytest framework, Page Object Model, Android automation, iOS automation, web and mobile automation.
This course combines Selenium Python for web and Appium 3 Python for mobile so you can build end-to-end automation skills for real projects and interviews.
If you are searching for Appium Python, Selenium Python, Appium and Selenium, or Python web and mobile automation training in one course, this course is for you.
Course is updated on 11-December-2025 with below concepts:
Overview on AI
Overview on LLM
Overview on RAG
Overview on Generative AI
Overview on Memory
Overview on AI Agent
Overview on LangChain & LangGraph
Overview on MCP Server
Overview on Human In the loop , Hallucination & Guardrails
Overview on Fine-Tuning
Overview on Context
Overview on Prompts
ChatGPT vs CoPilot vs CURSOR
Overview on OpenAI
Overview on AI Models
Overview on n8n workflow
Generate API Key in OpenAI
Create workflow in n8n
Create Public Chat in n8n workflow
Overview on OpenAI Tokens
CURSOR - Create a Chrome Extension for Record & Playback
CURSOR - Create an OTP Shield Mobile APP
Install GITHUB Copilot to PyCharm Editor
Generate Appium Python Program using CoPilot in PyCharm
Generate framework code using CoPilot
Course is updated on 09-08-2025 with below topics
When to use ID & Xpath - doubts clarification video added at lecture 31
Course is updated on 04-08-2025 with below topics
Scroll using UiScrollable
Scroll using UiScrollable - setAsVerticalList
Scroll using UiScrollable - setAsHorizontalList
Scroll using UiScrollable - setMaxSearchSwipes
Scroll using UiScrollable - scrollForward & scrollBackward
Scroll using UiScrollable - ScrollToEnd & scrollToBeginning
Course is updated on 03-08-2025 with below topics
Parallel Execution using systemPort & wdaLocalPort
Course is updated on 02-08-2025 with below topics
Appium-gestures-plugin : DoubleTap
Appium-gestures-plugin : longPress
Course is updated on 01-08-2025 with below topics
Overview on ElementID
Appium-gestures-plugin installation & overview
Appium-gestures-plugin : Swipe Up & Swipe Down- Android
Appium-gestures-plugin : Swipe Up & Swipe Down- iPhone
Appium-gestures-plugin : Swipe Left & Swipe Right
Appium-gestures-plugin : Drag and Drop
Course is updated on 31-07-2025 with below topics
Coordinates identification which covers X , Y, Height & Width
Course is updated on 30-07-2025 with below topics
We added a new section in which we are going to upload Q & A's & Student's requested topics, please find below section name "Interview Question & Answers & Student Requested Topics"
Course is updated on 29-07-2025 with below topics
Appium-device-farm plugin - Video Recording Configuration
Appium-device-farm plugin - Video Recording Implementation
Course is updated on 28-07-2025 with below topics
find_image_occurrence command with example
appium-device-farm plugin configuration , implementation with example
Course is updated on 27-07-2025 with below topics
getImagesSimilarity command with example
Course is updated on 26-07-2025 with below topics
Appium-Dashboard Plugin with examples
Appium-Image Plugin with examples
Course is updated on 08-June-2025:
Customised framework for Mobile & Web - Single framework that supports Mobile Apps & Web application
Appium & Selenium using Python - Master Mobile & Web automation testing with APPIUM 2.X on Android & iOS & devices, Selenium Webdriver
This course is designed for complete beginners.
If you are a complete beginner on Appium or Selenium or Python this course helps you to master the tool. Very basic step by step videos to guide you from scratch
Get started with Appium & Selenium using Python .
APPIUM topics :
Introduction to Python
Install Python on Windows
Install Python on MAC
Overview on editors and install PyCharm
Configure Eclipse editor for python scripting
Creating a project and adding comments to PyCharm
Data types and examples
Examples on String data type
Overview on List with examples
If Statement and examples
For Loop statements with examples
While Loop statements with examples
overview on functions and import
Introduction to Class and Object
Importance of HOMEBREW
APPIUM Python Configuration
Overview on Appium 2.X
Install Appium 2.X , Install Drivers for Android & iOS executions
Overview on Drivers & Options
Appium Python Program to Launch Android & iOS App
Overview on USB Debugging Mode & Connect Real Android Phone
Appium Inspector - Overview , Installation, Example
Scenario : Launch app & Handle Button, Text field
Scenario : Handling Alerts, Text Fields , Buttons- Singup & Login flow
Scenario : Handling Switch, Dropdown & Alert Button
Scenario : Handling DropDown using FindElements, GetAttribute
Scenario : ScrollDown using latest actions
Scenario : TAP & LongPress using latest actions
Overview on Synchronisation with examples
Start APPIUM Server using a Program
Appium Inspector ==> Record & Identify Elements using Coordinates
Examples on Keyboard Handling
Handling Hybrid App ==> Switching Context
Handling SYSTEM Apps - Camera & Calculator
Scenario - WEB APP Handling
Screenshot & Video capturing
noReset with example
OPTIONAL - MAC CONFIGURATION OVERVIEW
Establish Inspector Session for UIKitCatalog app on simulator
Handling Buttons , Text Fields, Checkbox on Simulator
Handling of Switches
Handling Alerts
Handling Date Picker
Handling Picker View
Switch Context - From Native to Web View
Tap using coordinates
Perform Scroll down on the app
Configuring PyTest & Executing Basic functions
PyTest Fixtures & Decorators with examples
PyTest Marker, Parameterised Markers with examples
PyTest Hard Assertions, Soft Assertions
PyTest Launch App on iPhone Simulator
Pytest Parameters in Launching iOS App
PyTest Reports - HTML & ALLURE with examples
PyTest - Capture Screenshot & Screenshot on Failure
Parallel Execution on Simulators
Generate Logs
Reading Data from a Config File
Read Data From Excel & Write Data in Excel
Framework - Page Factory Model
Overview on GITHUB
Appium Framework Part - Jenkins Integration
Selenium Topics:
Install Python on Windows
Install Python on MAC
Overview on editors and install PyCharm
Configure Eclipse editor for python scripting
Creating a project and adding comments to PyCharm
Data types and examples
Examples on String data type
Overview on List with examples
If Statement and examples
For Loop statements with examples
While Loop statements with examples
overview on functions and import
Introduction to Class and Object
Why people prefer python than java for selenium
Overview on Selenium
Record and playback options in Selenium
Install selenium for python
Scenario 1: First automation script in pycharm
Overview on locators
How to use locators in a program
Scenario 2: Perform search operation on bing
Run test script without specifying driver exe file
Scenario 3: Handling checkboxes
Scenario 4: Handling RadioButtons
Scenario 5: Handling Dropdown
Scenario 6: Create a test script using findElements - Part 1
Scenario 8: Perform tab operation using sendkeys command
Scenario 9: Handling frames
Scenario 10: Selecting a date from date picker
Scenario 11: Handling drag n drop
Scenario 13: How to capture coordinates of an object
Scenario 14: Handle tooltips
Scenario 15: Handle Auto Suggestions and capture screenshot
Scenario 16: Handle Mouse Hover
Scenario 18: Handling multiple windows
Scenario 19: Handling Webtables
Scenario 20: Examples on wait
Scenario 21: Handling alerts
Scenario 22: Handling Javascripts
Scenario 23: Data Driven testing with examples
Overview on unittest framework with examples
Generate test execution report
Page Object Model with example
Page factory model with example
Overview on GITHub
Execute unittest from Jenkins
Introduction to framework with example
Configuring PyTest & Executing Basic functions
PyTest Fixtures & Decorators with examples
PyTest Marker, Parameterised Markers with examples
PyTest Hard Assertions, Soft Assertions
Capture Screenshot & Screenshot on Failure
Generate HTML & Allure Reports
Reusable Logics - Utilities -Generate Logs
Reusable Logics - Utilities -Reading Data from a Config File
Reusable Logics - Utilities -Read Data From Excel & Write Data in Excel
Selenium Framework - Page Factory Model - GIT HUB & Jenkins Pipeline
PyTest features
Data Driven & conftest utilities
Selenium Framework - Page Factory Model - GIT HUB & Jenkins Pipeline
PyTest - Login to Sauce Demo application
Lets Get Started... Wish you Good luck