We are testing the blog
Python List MCQs
- Python Features
- Python Installation
- PyCharm Configuration
- Python Variables
- Python Data Types
- Python If Else
- Python Loops
- Python Strings
- Python Lists
- Python Tuples
- Python List Vs Tuple
- Python Sets
- Python Dictionary
- Python Functions
- Python Built-in Functions
- Python Lambda Functions
- Python Files I/O
- Python Modules
- Python Exceptions
- Python Datetime
- Python List Comprehension
- Python Collection Module
- Python Sys Module
- Python Decorator
- Python Generators
- Python JSON
- Python OOPs Concepts
- Python Numpy Module
- Python Pandas Module
- Python Sqlite Module
Python List MCQ Quiz (Random 10 Questions)
Python String MCQs
- Python Features
- Python Installation
- PyCharm Configuration
- Python Variables
- Python Data Types
- Python If Else
- Python Loops
- Python Strings
- Python Lists
- Python Tuples
- Python List Vs Tuple
- Python Sets
- Python Dictionary
- Python Functions
- Python Files I/O
- Read Write Excel
- Read Write JSON
- Read Write CSV
- Python OS Module
- Python Exceptions
- Python Datetime
- Python Collection Module
- Python Sys Module
- Python Decorator
- Python Generators
- Python OOPS
- Python Numpy Module
- Python Pandas Module
- Python Sqlite Module
Python String Quiz (Random 10 of 50)
🔄 Refresh the page to get a new set of questions.
⏳ Time Left: 120 seconds
Automation Practice Page
Text Fields
Radio Buttons
Checkboxes
Dropdown (Select)
Multi Select Dropdown
Buttons
JavaScript Alerts
File Upload
Date and Time Pickers
Links
Open GoogleGo to Bottom
Web Table
| ID | Name | Role |
|---|---|---|
| 1 | Deepesh | Trainer |
| 2 | Rahul | Tester |
| 3 | Anita | Developer |
Iframe
Hidden Element
Enabled & Disabled Fields
Image
Mouse Hover
Bottom of Page
This is the bottom of the page for scrolling practice.
Ultimate Automation Practice Page
Auto Suggestions (Google Style)
AJAX Success & Network Failure
Stale Element Simulation
Drag and Drop
Keyboard Actions
Nested Shadow DOM
Login Page
mysocial
Connect with friends and the world around you on MySocial.
Create a Page for a celebrity, brand or business.
Data Type Conversion in Python
- Python Features
- Python Installation
- PyCharm Configuration
- Python Variables
- Python Data Types
- Python If Else
- Python Loops
- Python Strings
- Python Lists
- Python Tuples
- Python List Vs Tuple
- Python Sets
- Python Dictionary
- Python Functions
- Python Files I/O
- Read Write Excel
- Read Write JSON
- Read Write CSV
- Python OS Module
- Python Exceptions
- Python Datetime
- Python Collection Module
- Python Sys Module
- Python Decorator
- Python Generators
- Python OOPS
- Python Numpy Module
- Python Pandas Module
- Python Sqlite Module
Datatype Conversion:
Below is a table that demonstrates the conversion of various Python data types into other data types. Each entry in the table includes the original data type, the target data type, a code snippet to perform the conversion, and an example output.
Integer(int) : Convert int Data Type to all other Data Type.
| Data Type | Target Data Type | Code | Output |
int | float | num_int = 10 num_float = float(num_int) | 10.0 |
int | str | num_int = 42 num_str = str(num_int) | ’42’ |
int | complex | num_int = 5 num_complex = complex(num_int) | (5+0j) |
int | list | num_int = 123 num_list = list(num_int) | TypeError: ‘int’ object is not iterable Conversion is not possible |
int | dict | num_int = 1 num_dict = dict(num_int) | TypeError: ‘int’ object is not iterable Conversion is not possible |
int | tuple | num_int = 7 num_tuple = tuple(num_int) | TypeError: ‘int’ object is not iterable Conversion is not possible |
| int | bool | num_int = 0 num_bool = bool(num_int) print(num_bool) num_int1 = 123 num_bool1 = bool(num_int1) print(num_bool1) | False True |
Float: Convert Float Data Type to all other Data Type.
| Data Type | Target Data Type | Code | Output |
| float | int | num_float = 10.5 num_int = int(num_float) | 10 |
| float | str | num_float = 3.14 num_str = str(num_float) | ‘3.14’ |
| float | complex | num_float = 3.0 num_complex = complex(num_float,4.5) | (3+4.5j) |
| float | list | num_float = 3.14 num_list = list(num_float) | TypeError: ‘int’ object is not iterable Conversion is not possible |
| float | dict | num_float = 2.5 num_dict = dict(num_float) | TypeError: ‘int’ object is not iterable Conversion is not possible |
| float | tuple | num_float = 1.5 num_tuple = float(num_float) | TypeError: ‘int’ object is not iterable Conversion is not possible |
| float | bool | num_int = 0 num_bool = bool(num_int) print(num_bool) num_int1 = 12.3 num_bool1 = bool(num_int1) print(num_bool1) | False True |
Complex : Convert complex data type to all other data type.
| Data Type | Target Data Type | Code | Output |
| complex | int | num_complex = complex(3, 4) num_int = int(num_complex) | TypeError: int() argument must be a string, a bytes-like object or a real number, not ‘complex’ Conversion is not possible. |
| complex | float | i). num_complex = complex(3, 4) num_float = float(num_complex) ii). num_complex = complex(3, 4) num_float = float(num_complex.real) | i).TypeError: float() argument must be a string or a real number, not ‘complex’ Conversion is not possible. ii). 3 |
| complex | str | num_complex = complex(1, 2)<br>num_str = str(num_complex) | ‘(1+2j)’ |
| complex | list | num_complex = complex(2, 3) num_list = [num_complex.real, num_complex.imag] | [2.0, 3.0] |
| complex | dict | num_complex = complex(2, 1) num_dict = {‘real’: num_complex.real, ‘imag’: num_complex.imag} | {‘real’: 2.0, ‘imag’: 1.0} |
| complex | tuple | num_complex = complex(4, 5) num_tuple = (num_complex.real, num_complex.imag) | (4.0, 5.0) |
| complex | bool | num_complex = complex(0, 0) num_bool = bool(num_complex) | False |
String(str) : Convert str data type to all other data type.
| Data Type | Target Data Type | Code | Output |
str | int | num_str = ‘987’ num_int = int(num_str) | 987 |
str | float | num_str = ‘2.71’ num_float = float(num_str) | 2.71 |
str | complex | num_str = ‘1+2j’ num_complex = complex(num_str) | (1+2j) |
str | list | str_val = ‘hello’ list_val = list(str_val) | [‘h’, ‘e’, ‘l’, ‘l’, ‘o’] |
str | dict | str_val = ‘hello’ dict_val = {str_val: len(str_val)} | {‘hello’: 5} |
str | tuple | str_val = ‘abc’ tuple_val = tuple(str_val) | (‘a’, ‘b’, ‘c’) |
str | bool | str_val = ‘True’ bool_val = bool(str_val) | True |
List(list) : Convert list data type to all other data type.
| Data Type | Target Data Type | Code | Output |
| list | int | num_list = [1, 2, 3] num_int = int(”.join(map(str, num_list))) | 123 |
| list | float | num_list = [3, 1, 4] num_float = float(”.join(map(str, num_list))) | 314.0 |
| list | str | num_list = [10, 20, 30] num_str = ‘, ‘.join(map(str, num_list)) | ’10, 20, 30′ |
| list | complex | num_list = [2, 3] num_complex = complex(num_list[0], num_list[1]) | (2+3j) |
| list | dict | num_list = [1, 2] num_dict = dict(zip(num_list, [‘one’, ‘two’])) | {1: ‘one’, 2: ‘two’} |
| list | tuple | num_list = [7, 8, 9] num_tuple = tuple(num_list) | (7, 8, 9) |
| list | bool | num_list = [0, 1, 0] num_bool = any(num_list) | True |
Tuple(tuple) : Convert tuple data type to all other data type.
| Data Type | Target Data Type | Code | Output |
| tuple | int | num_tuple = (4, 5, 6) num_int = int(”.join(map(str, num_tuple))) | 456 |
| tuple | float | num_tuple = (1, 2) num_float = float(‘.’.join(map(str, num_tuple))) | 1.2 |
| tuple | str | num_tuple = (7, 8, 9) num_str = ‘, ‘.join(map(str, num_tuple)) | ‘7, 8, 9’ |
| tuple | complex | num_tuple = (3, 4) num_complex = complex(num_tuple[0], num_tuple[1]) | (3+4j) |
| tuple | list | num_tuple = (10, 20) num_list = list(num_tuple) | [10, 20] |
| tuple | dict | num_tuple = (‘x’, 1) num_dict = dict([num_tuple]) | {‘x’: 1} |
| tuple | bool | num_tuple = (0, 0) num_bool = any(num_tuple) | False |
Dictionary(dict) : Convert dict data type to all other data type.
| Data Type | Target Data Type | Code | Output |
| ict | int | num_dict = {‘a’: 1} num_int = int(list(num_dict.keys())[0]) | 97 |
| dict | float | num_dict = {‘pi’: 3.14} num_float = float(list(num_dict.values())[0]) | 3.14 |
| dict | str | num_dict = {1: ‘one’} num_str = str(list(num_dict.keys())[0]) | ‘1’ |
| dict | complex | num_dict = {3: 5} num_complex = complex(list(num_dict.keys())[0], list(num_dict.values())[0]) | (3+5j) |
| dict | list | num_dict = {‘a’: 1, ‘b’: 2} num_list = list(num_dict.items()) | [(‘a’, 1), (‘b’, 2)] |
| dict | tuple | num_dict = {‘x’: 10, ‘y’: 20} num_tuple = tuple(num_dict.items()) | ((‘x’, 10), (‘y’, 20)) |
| dict | bool | num_dict = {‘flag’: True} num_bool = bool(list(num_dict.values())[0]) | True |
Set : Convert set data type to all other data type.
| Data Type | Target Data Type | Code | Output |
| set | int | num_set = {1, 2, 3} num_int = int(”.join(map(str, num_set))) | 123 |
| set | float | num_set = {3, 1, 4} num_float = float(”.join(map(str, num_set))) | 314.0 |
| set | str | num_set = {10, 20, 30} num_str = ‘, ‘.join(map(str, num_set)) | ’10, 20, 30′ |
| set | complex | num_set = {2, 3} num_complex = complex(list(num_set)[0], list(num_set)[1]) | (2+3j) |
| set | list | num_set = {1, 2, 3} num_list = list(num_set) | [1, 2, 3] |
| set | dict | num_set = {1, 2, 3} num_dict = dict.fromkeys(num_set, ‘value’) | {1: ‘value’, 2: ‘value’, 3: ‘value’} |
| set | tuple | num_set = {7, 8, 9) num_tuple = tuple(num_set) | (8, 9, 7) |
| set | bool | num_set = set() num_bool = bool(num_set) | False |
Boolean(bool) : Convert bool data type to all other data type.
| Data Type | Target Data Type | Code | Output |
| bool | int | num_bool = False num_int = int(num_bool) | 0 |
| bool | float | num_bool = True num_float = float(num_bool) | 1.0 |
| bool | str | num_bool = True num_str = str(num_bool) | ‘True‘ |
| bool | complex | num_bool = True num_complex = complex(int(num_bool), 0) | (1+0j) |
| bool | list | num_bool = False num_list = [int(num_bool)] | [0] |
| bool | dict | num_bool = True num_dict = {str(num_bool): ‘boolean’} | {‘True’: ‘boolean’} |
| bool | tuple | num_bool = False num_tuple = (int(num_bool),) | (0,) |
Keyboard Action in Python Selenium
- Selenium Features
- Selenium Installation
- Selenium Locators
- XPath Fundamentals
- CSS Selectors Methods
- Different Browsers Execution
- find_element & find_elements
- Check Enabled Status
- Check Displayed Status
- Check Selected Status
- Selenium Waits
- Send_keys Method
- Click Method
- Get Text
- Get Attribute Value
- Get Current URL
- Forward, Back, Refresh
- Take Screenshot
- Handle Browser Tabs
- Handle iframe
- Mouse Hover
- Context-Click
- Drag & Drop
- Handle Alerts
- Handle Dropdown
- Execute Javascript
- Scroll To element
- Headless Mode Execution
- Chrome Options
- Keyboard Action
Introduction to Keyboard Actions in Selenium
When automating web applications with Python Selenium, handling keyboard interactions is crucial for testing scenarios like filling forms, simulating keypresses, and navigating applications. Selenium provides robust functionalities to simulate user interactions with a keyboard using the ActionChains class and send_keys method.
Import Required Modules
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains
Using send_keys to Simulate Typing
The send_keys method allows us to send keyboard inputs to elements like text fields.
Example: Entering Text in a Textbox
# Launch browser
driver = webdriver.Chrome()
driver.get("https://facebook.com")
# Locate the input field
input_field = driver.find_element("name", "username")
# Simulate typing
input_field.send_keys("TestUser")
Keyboard Shortcuts Using Keys Class
Selenium provides the Keys class to simulate keyboard shortcuts like CTRL+C, CTRL+V, ENTER, and more.
Example: Pressing ENTER Key
input_field.send_keys(Keys.ENTER)
Example: Copy-Paste Using Keyboard Shortcuts
input_field.send_keys("Test")
input_field.send_keys(Keys.CONTROL, 'a') # Select all
input_field.send_keys(Keys.CONTROL, 'c') # Copy
input_field.send_keys(Keys.TAB) # Move to next field
input_field.send_keys(Keys.CONTROL, 'v') # Paste
Using ActionChains for Complex Keyboard Actions
ActionChains helps perform multiple actions, including pressing and releasing keys.
Example: Using ActionChains for Keyboard Events
# Create ActionChains instance
actions = ActionChains(driver)
# Locate element
element = driver.find_element("id", "search")
# Perform actions
actions.click(element)
actions.send_keys("Selenium Automation")
actions.send_keys(Keys.RETURN)
actions.perform()
Handling Special Keys
Some keys like BACKSPACE, DELETE, ESC, F1-F12, SHIFT, ALT, CONTROL are essential in automation.
Example: Using Special Keys
input_field.send_keys(Keys.BACKSPACE) # Deletes last character input_field.send_keys(Keys.ESCAPE) # Simulates ESC key
Pressing and Holding Keys
Pressing and holding keys like SHIFT allows us to capitalize text or perform shortcuts.
Example: Holding SHIFT Key
actions.key_down(Keys.SHIFT).send_keys("selenium").key_up(Keys.SHIFT).perform()
Using send_keys_to_element Method
Instead of sending keys directly, send_keys_to_element allows targeted input.
Example: Sending Keys to Specific Element
from selenium.webdriver.common.actions.action_builder import ActionBuilder action = ActionBuilder(driver) action.send_keys_to_element(input_field, "Automated Text").perform()
Automating Login Forms Using Keyboard Actions
Example: Automating Login with Keyboard Inputs
driver.get("https://facebook.com/login")
# Locate fields
username = driver.find_element("name", "username")
password = driver.find_element("name", "password")
# Type credentials
username.send_keys("testuser")
password.send_keys("securepassword")
password.send_keys(Keys.RETURN) # Press Enter
Handling Alerts and Popups Using Keyboard Keys
Example: Closing an Alert Using ESC
alert = driver.switch_to.alert actions.send_keys(Keys.ESCAPE).perform()
Chrome Options in Python Selenium
- Selenium Features
- Selenium Installation
- Selenium Locators
- XPath Fundamentals
- CSS Selectors Methods
- Different Browsers Execution
- find_element & find_elements
- Check Enabled Status
- Check Displayed Status
- Check Selected Status
- Selenium Waits
- Send_keys Method
- Click Method
- Get Text
- Get Attribute Value
- Get Current URL
- Forward, Back, Refresh
- Take Screenshot
- Handle Browser Tabs
- Handle iframe
- Mouse Hover
- Context-Click
- Drag & Drop
- Handle Alerts
- Handle Dropdown
- Execute Javascript
- Scroll To element
- Headless Mode Execution
- Chrome Options
- Keyboard Action
Introduction to Chrome Options in Selenium
Chrome options in Python Selenium play a crucial role in configuring and customizing the Chrome browser for automation tasks. By utilizing ChromeOptions, testers and developers can enhance their browser automation scripts by enabling or disabling certain features, managing extensions, controlling headless browsing, and much more.
Setting Up ChromeOptions in Selenium
To begin using ChromeOptions, we must import the required modules and instantiate the WebDriver with custom options. Below is a basic implementation:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Instantiate ChromeOptions
chrome_options = Options()
# Initialize WebDriver with options
driver = webdriver.Chrome(options=chrome_options)
This code initializes the Chrome browser with default settings. However, we can add multiple options to configure the browser according to our needs.
Commonly Used ChromeOptions in Selenium
1. Running Chrome in Headless Mode
Headless mode runs Chrome without a visible UI, making tests faster and more efficient:
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(options=chrome_options)
This is particularly useful for continuous integration (CI) pipelines where a graphical interface is unnecessary.
2. Disabling Browser Notifications
To prevent pop-up notifications from interrupting automation tests:
chrome_options.add_argument("--disable-notifications")
3. Running Selenium in Incognito Mode
To launch Chrome in incognito mode for testing privacy-related functionalities:
chrome_options.add_argument("--incognito")
4. Disabling GPU Acceleration
In some cases, GPU acceleration may cause issues. We can disable it as follows:
chrome_options.add_argument("--disable-gpu")
5. Maximizing the Browser Window
To start Chrome with a maximized window:
chrome_options.add_argument("--start-maximized")
6. Running Chrome with a Custom User-Agent
To simulate different browsers and devices, we can set a custom User-Agent:
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
chrome_options.add_argument(f"--user-agent={user_agent}")
7. Using a Specific Proxy
To route browser traffic through a proxy:
proxy = "http://your.proxy.server:port"
chrome_options.add_argument(f"--proxy-server={proxy}")
8. Disabling Extensions
To launch Chrome without loading any installed extensions:
chrome_options.add_argument("--disable-extensions")
Advanced ChromeOptions Configurations
1. Adding Experimental Options
Chrome provides experimental options that can be enabled via ChromeOptions:
prefs = {"profile.default_content_setting_values.cookies": 2} # Block cookies
chrome_options.add_experimental_option("prefs", prefs)
2. Using Prefers Reduced Motion Setting
To disable animations for improved performance:
chrome_options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
3. Specifying the Chrome Binary Path
If Chrome is installed in a non-standard location:
chrome_options.binary_location = "/path/to/chrome"
4. Capturing Browser Console Logs
For debugging JavaScript errors, we can enable logging:
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
capabilities = DesiredCapabilities.CHROME.copy()
capabilities["goog:loggingPrefs"] = {"browser": "ALL"}
driver = webdriver.Chrome(desired_capabilities=capabilities, options=chrome_options)
Integrating ChromeOptions with Selenium WebDriver
Here’s a complete example demonstrating multiple ChromeOptions:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--window-size=1920x1080")
chrome_options.add_argument("--disable-notifications")
chrome_options.add_argument("--no-sandbox")
# Initialize WebDriver
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.facebook.com")
print(driver.title)
driver.quit()
Headless Mode Execution in Python Selenium
- Selenium Features
- Selenium Installation
- Selenium Locators
- XPath Fundamentals
- CSS Selectors Methods
- Different Browsers Execution
- find_element & find_elements
- Check Enabled Status
- Check Displayed Status
- Check Selected Status
- Selenium Waits
- Send_keys Method
- Click Method
- Get Text
- Get Attribute Value
- Get Current URL
- Forward, Back, Refresh
- Take Screenshot
- Handle Browser Tabs
- Handle iframe
- Mouse Hover
- Context-Click
- Drag & Drop
- Handle Alerts
- Handle Dropdown
- Execute Javascript
- Scroll To element
- Headless Mode Execution
- Chrome Options
- Keyboard Action
Introduction to Headless Mode in Selenium
While Selenium can execute scripts with a visible browser window, headless execution allows tests to run in the background, significantly improving performance and efficiency.
Headless mode is particularly useful for environments where GUI is not required, such as server-side automation, continuous integration (CI/CD) pipelines, and web scraping. This article provides a comprehensive guide on how to execute Selenium scripts in headless mode using Python.
Why Use Headless Mode in Selenium?
There are several benefits to using headless mode in Selenium:
- Increased Performance: Without rendering a UI, execution is faster and consumes fewer system resources.
- Automation in Non-GUI Environments: Essential for running tests on headless servers.
- Enhanced Stability in CI/CD Pipelines: Minimizes issues related to UI rendering.
- Faster Web Scraping: Extracts data from websites efficiently without opening a visible browser window.
Setting Up Selenium for Headless Execution
Before running Selenium in headless mode, ensure you have the following installed:
Headless Mode Execution with Chrome
Google Chrome supports headless execution natively. Below is how you can configure Selenium with Chrome in headless mode:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Set up Chrome options
chrome_options = Options()
chrome_options.add_argument("--headless") # Enable headless mode
chrome_options.add_argument("--disable-gpu") # Recommended for Windows OS
chrome_options.add_argument("--window-size=1920x1080") # Set window size
driver = webdriver.Chrome(options=chrome_options)
# Open a website
driver.get("https://www.facebook.com")
print(driver.title)
# Close the browser
driver.quit()
Headless Mode Execution with Firefox (GeckoDriver)
For Mozilla Firefox, you need to set the headless argument:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
# Set up Firefox options
firefox_options = Options()
firefox_options.add_argument("--headless")
driver = webdriver.Firefox(options=firefox_options)
# Open a website
driver.get("https://www.facebook.com")
print(driver.title)
# Close the browser
driver.quit()
Running Selenium in Headless Mode with Different Browsers
Apart from Chrome and Firefox, Selenium also supports headless execution with other browsers like Edge and Opera. Here’s how you can configure them:
Microsoft Edge (Chromium-based)
from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.add_argument("--headless")
driver = webdriver.Edge(options=edge_options)
# Open a website
driver.get("https://www.facebook.com")
print(driver.title)
# Close the browser
driver.quit()
Taking Screenshots in Headless Mode
Even though the browser is running in headless mode, you can still capture screenshots:
driver.save_screenshot("screenshot.png")
Best Practices for Running Selenium in Headless Mode
- Always set a window size: Some elements may not load correctly without a defined viewport.
- Use explicit waits: JavaScript-heavy pages require WebDriverWait.
- Handle exceptions: Use try-except to manage errors efficiently.
- Use logging: Monitor script behavior with logging.
- Update drivers: Ensure compatibility with the latest browser versions.
