
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.
Overview of retrieval augmented generation (rag) and its use as a knowledge base for LLMs. It explains how a vector database stores information and augments queries to improve accuracy.
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 how memory lets AI store, retain, and recall past interactions for meaningful conversations. Distinguish short-term memory from long-term memory with tracking examples.
Learn how an AI agent acts as a software program that achieves a goal by perceiving its environment, reasoning, planning, using tools, observing results, and collaborating with other agents.
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.
Fine tuning updates an AI agent's internal knowledge to tailor interactions for customers, branch staff, and officials. Unlike rag, it uses internal updates rather than external knowledge.
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.
Learn how to define a context file for a language model, setting roles like manual or automation tester, and generate test cases from user stories, acceptance criteria, and interface mocks.
Define a manual context file and prompts to govern a generic login flow, including positive and negative test cases and the required acceptance criteria.
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.
Understand AI models, from GPT to dalle E, trained on data to recognize patterns and generate human-like text, and distinguish them from LLMs.
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.
Build an n8n workflow that reads data from Google Sheets via a Google Drive connection, uses a GPT-4.1 mini AI agent, and sends an email when Sam is found.
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 build an n8n workflow that reads a sheet, checks for new defects, and automatically creates Jira bugs with descriptions, as two defects Luke one and Luke two illustrate.
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 a Chrome extension for record and playback that automatically generates Playwright TypeScript and Selenium scripts, with options to download, clear, and review actions.
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.
Explore creating local agents with agent.md and skills.md to automate test case generation and script creation, using story or test case IDs and tools like Azure, Jira, Playwright, and Selenium.
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.
I am updating the AI video series with new content and AI concepts. I will post daily videos over the next week, covering test script updates and framework creation.
Explore mobile automation with Appium and web automation with Selenium using Python, covering installation, Python basics, Appium inspector, Android and iOS UI elements, and pytest-based frameworks.
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 a Windows machine by downloading the official exe, running the installer, updating the Python path in environmental variables, and verifying with python --version and pip --version.
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.
Create a new PyCharm project, add a Python file, and write code with single-line and multi-line comments to document logic, and run to print hello world.
Learn how Python handles variables and data types, including integers, floats, and strings, with practical examples of arithmetic, type checks, and printing.
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.
This lecture explains Python type casting, showing implicit conversion from int to float and explicit conversion using int(), float(), and str() with practical examples.
Explore how Python lists store multiple items of different data types in a single variable, in an ordered, mutable structure. Learn to index, update, append, insert, remove, and check length.
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.
Discover how a Python set stores unique data with curly braces and comma-separated values, showing no duplicates, how to add values, and how discard removes them to modify the set.
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.
this lecture introduces tuples as immutable collections, similar to lists but not modifiable after creation, preserving insertion order and duplicates, with index-based access and length demonstrated using an emp id.
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.
Learn how to implement while loops in Python with practical examples, compare them to for loops, manage conditions and termination, and avoid infinite loops in WebDriver-related projects.
Explain how to define and call functions in Python, covering user-defined and built-in functions, parameters, return values, and import statements for using libraries.
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.
Master the basics of class and object creation in Python, treating a class as a blueprint and using docstrings and self to access attributes and methods.
Discover how static methods bind to the class, not an instance, using the @staticmethod decorator, and how to access them via the class name or an object.
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.
Learn how to reuse code across Python files by importing a parent class from another script, instantiate it, and call its greeting, with direct versus module-based imports.
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.
Explore the difference between exceptions and errors in Python, with runtime examples like division by zero and out-of-bounds access, and learn how built-in exceptions are handled.
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.
Understand Appium 3 architecture, updates, and plugin-enabled command flow from client to server to drivers, including migration from Appium 2 and Node 20 npm 10.
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.
Migrate from apm2 to apm3 by performing an apm setup reset to clear configuration, uninstall drivers and plugins, then reinstall apm globally and verify the 3.x version.
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.
Check the official GitHub compatibility matrix for Appium Python client and Selenium bindings to ensure correct versions and avoid runtime class not found errors.
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.
Start the Appium inspector plugin on the server and access its UI to inspect elements, use the capability builder to save capabilities, and attach to existing sessions across cloud providers.
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.
Explore screen coordinates by defining x and y positions, understanding the zero-origin at the top-left, and calculating center and edges to support swipe, scroll, and tap actions.
Learn to obtain screen dimensions and coordinates in Appium with Python by using driver.get_window_size() and driver.get_window_rect(), printing width, height, and top-left origin 0,0.
Learn how to obtain an element's x and y coordinates, compute its center using width and height, and perform a center click in Appium and Selenium with Python.
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.
Master vertical scrolling with the latest actions API in Appium and Selenium using Python, via actions chain, pointer input, interactions, and action builder with screen coordinates.
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 keyboard handling in Appium for Android with Python by using press key code to simulate typing and key presses, including codes like 11 for A and 66 for enter.
Learn to handle hybrid apps by switching context from native to a web view, locate web elements with chrome inspect, and manage context transitions during test automation.
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.
Learn to capture screenshots and start screen recording in a Python automation project, save images to an absolute path, and decode base64 video data into mp4 files.
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.
Download and set up iOS testing apps, including swag labs and the ui kit catalog, then build and run on the iphone 17 pro simulator in Xcode.
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.
Learn to perform tap actions by coordinates in Appium using Python, reusing Android tap logic with pointer input and action builder to click continue and interact with Google forms.
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.
Interact with the Safari browser on iOS by launching the browser, navigating to a web page, entering credentials via id and xpath elements, and clicking login to verify success.
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.
Define preconditions and post conditions with pytest fixtures to manage resources; use function-level and module-level setup and teardown, including yield-based fixtures.
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.
Define a pytest test that uses setup to create an Appium driver with desired capabilities and launch the iPhone simulator app, then teardown stops the server and quits the driver.
Use pytest parameterization to run an iOS app signup test with two data sets, feeding username and email from a data source across launches.
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.
Configure allure on a Mac by installing Homebrew, running brew install allure, and adding the allure-pytest package in PyCharm to enable report generation.
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.
Discover how to run parallel tests on a single Appium server using system port for Android and WDA local port for iOS, enabling real and emulator devices to run simultaneously.
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 the page factory model extends the page object model by combining locators with action methods in Python for Appium and Selenium tests, including login and sign-up workflows.
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.
Build a login page object with a page factory, defining an accessibility id locator and using the driver to click the alerts option in the catalog app.
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.
Learn how to attach timestamped screenshots to allure reports during Appium and Selenium tests with Python, including dynamic file naming, report cleanup, and using assertions to capture failures.
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.
Modify the test to use a get data function with parameterized username and email, enabling two data sets to run in the app launch and fill form flow.
Learn to commit and push the Appium framework from PyCharm to GitHub using version control, share the Python APM framework repository, and clone or update with new chunks.
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.
Configure an AI-driven page factory framework for Appium3 and Selenium tests, set up iOS and Android capabilities, fix imports, and run login tests with pytest.
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.
Automate an iOS app using Appium-MCP by defining iOS capabilities in capabilities.json, connecting via the MCP inspector, launching the Verve app, and performing login actions.
Learn to generate an Appium MCP Python program that launches a Sauce Demo app, enters credentials, and taps login using a UDID and iOS version.
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.
Install and use the APM images plugin to enable image-based testing in the APM framework, identify elements by image, and run the APM server with the plugin.
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 how to install and activate the Appium gestures plugin using the APM installer, then perform swipe, scroll, double tap, and long-press gestures on Android and iOS with practical examples.
Learn to implement Android swipes using the APM gesture plugin in Python, performing up, down, left, and right swipes with scroll element into view, accessibility id, and content description.
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.
Shows how to perform a drag and drop in an Appium Python test by selecting a source and destination via accessibility IDs and verifying the target element appears.
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.
Install selenium for Python from the official site, install the Python binding with pip install -U selenium, and learn about browser drivers.
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 how to run Selenium Python tests without specifying the driver exe by using WebDriver Manager to auto-manage Chrome, simplifying driver initialization and browser launches.
Learn to handle checkboxes in Selenium Python by checking status with is_selected and updating by clicking when needed, demonstrated through a Bing settings example.
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.
Identify multiple elements by tag name 'a' and print their link texts with a loop using find_elements; know that empty results return zero, unlike find_element.
Master Selenium Python find elements to capture dropdown options and links on bing.com and the Salesforce signup page by targeting a parent object and printing values.
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.
Handle auto suggestions in selenium python by entering a value, locating common elements with XPath, and printing all suggestions to the console; then capture a screenshot to a file.
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.
Handle mouseover by locating all elements with xpath, iterate with a for loop to match travel information text, then click the matching item and stop the loop.
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 manage multiple windows and frames in Selenium Python—from opening a new window, switching via window handles, to switching into frames and returning to the main window.
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.
Learn how to use implicit and explicit waits in Selenium WebDriver with Python to synchronize page loading and avoid no such element exceptions.
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.
Explore the Python unittest framework with practical Selenium automation examples, covering test cases, test suites, assertions, setup and teardown, and generating detailed test reports.
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.
Learn to implement selenium python unit tests with a Chrome webdriver manager, including setup and teardown, login flow, and user creation with frame switching and waits.
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 building a basic Selenium Python framework from scratch, including a page object model, test and page packages, drivers, reports, and screenshot capture for robust web test automation.
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.
Configure Pi test in PyCharm by installing the Pi test package in the Python interpreter, create a tests directory, and write test functions starting with test, then run tests.
Explore pytest fixtures and decorators with practical examples, defining function-level and module-level setup and teardown, using yield for teardown, and applying fixtures to manage server and database connections.
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 the difference between hard and soft assertions in pytest, how hard assertions stop execution on failure, and how soft assertions let tests continue with a soft assertion plugin.
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.
Capture screenshots with Appium and Selenium in Python, attach the image as a png to Allure reports, and use a pytest fixture to capture on failure for robust test reporting.
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