← Home

🌐

⌘K
ðŸĪ–
Claude Code AI Tools
ðŸĪ—
Hugging Face AI Tools
ðŸĶœ
LangChain AI Tools
🧠
Keras AI Tools
ðŸĶ™
Ollama AI Tools
🐍
Python Programming Languages
ðŸŸĻ
JavaScript Programming Languages
🔷
TypeScript Programming Languages
⚛ïļ
React Programming Languages
ðŸđ
Go Programming Languages
ðŸĶ€
Rust Programming Languages
📊
MATLAB Programming Languages
🗄ïļ
SQL Programming Languages
⚙ïļ
C/C++ Programming Languages
☕
Java Programming Languages
ðŸŸĢ
C# Programming Languages
🍎
Swift Programming Languages
🟠
Kotlin Programming Languages
â–ē
Next.js Programming Languages
💚
Vue.js Programming Languages
ðŸ”Ĩ
Svelte Programming Languages
ðŸŽĻ
Tailwind CSS Programming Languages
💚
Node.js Programming Languages
🌐
HTML Programming Languages
ðŸŽĻ
CSS/SCSS Programming Languages
🐘
PHP Programming Languages
💎
Ruby Programming Languages
ðŸ”ī
Scala Programming Languages
📊
R Programming Languages
ðŸŽŊ
Dart Programming Languages
💧
Elixir Programming Languages
🌙
Lua Programming Languages
🐊
Perl Programming Languages
🅰ïļ
Angular Programming Languages
🚂
Express.js Programming Languages
ðŸą
NestJS Programming Languages
ðŸ›Īïļ
Ruby on Rails Programming Languages
◾ïļ
GraphQL Programming Languages
🟊
Haskell Programming Languages
💚
Nuxt.js Programming Languages
🔷
SolidJS Programming Languages
⚡
htmx Programming Languages
ðŸ’ŧ
VS Code Development Tools
🧠
PyCharm Development Tools
📓
Jupyter Development Tools
🧠
IntelliJ IDEA Development Tools
💚
Neovim Development Tools
ðŸ”Ū
Emacs Development Tools
🔀
Git DevOps & CLI
ðŸģ
Docker DevOps & CLI
â˜ļïļ
Kubernetes DevOps & CLI
☁ïļ
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux Commands DevOps & CLI
ðŸ’ŧ
Bash Scripting DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
ðŸ”Ļ
Makefile DevOps & CLI
🧊
Pytest DevOps & CLI
🊟
Windows DevOps & CLI
ðŸ“Ķ
Package Managers DevOps & CLI
🍎
macOS DevOps & CLI
🏗ïļ
Terraform DevOps & CLI
🔧
Ansible DevOps & CLI
⎈
Helm DevOps & CLI
ðŸ”Ļ
Jenkins DevOps & CLI
ðŸ”Ĩ
Prometheus DevOps & CLI
📊
Grafana DevOps & CLI
ðŸ’ŧ
Zsh DevOps & CLI
🐟
Fish Shell DevOps & CLI
💙
PowerShell DevOps & CLI
🔄
Argo CD DevOps & CLI
🔀
Traefik DevOps & CLI
☁ïļ
Azure CLI DevOps & CLI
☁ïļ
Google Cloud CLI DevOps & CLI
📟
tmux DevOps & CLI
🔧
jq DevOps & CLI
✂ïļ
sed DevOps & CLI
📊
awk DevOps & CLI
🌊
Apache Airflow DevOps & CLI
ðŸ”Ē
NumPy Databases & Data
🐞
Pandas Databases & Data
ðŸ”Ĩ
PyTorch Databases & Data
🧠
TensorFlow Databases & Data
📈
Matplotlib Databases & Data
🐘
PostgreSQL Databases & Data
🐎
MySQL Databases & Data
🍃
MongoDB Databases & Data
ðŸ”ī
Redis Databases & Data
🔍
Elasticsearch Databases & Data
ðŸĪ–
Scikit-learn Databases & Data
👁ïļ
OpenCV Databases & Data
⚡
Apache Spark Databases & Data
ðŸŠķ
SQLite Databases & Data
⚡
Supabase Databases & Data
ðŸ”ĩ
Neo4j Databases & Data
ðŸ“Ļ
Apache Kafka Databases & Data
🐰
RabbitMQ Databases & Data
ðŸ”Ī
Regex Utilities
📝
Markdown Utilities
📄
LaTeX Utilities
🔐
SSH & GPG Utilities
🌐
curl & HTTP Utilities
📜
reStructuredText Utilities
🚀
Postman Utilities
🎎
FFmpeg Utilities
🖞ïļ
ImageMagick Utilities
🔍
ripgrep Utilities
🔍
fzf Utilities
📗
Microsoft Excel Office Applications
📘
Microsoft Word Office Applications
📙
Microsoft PowerPoint Office Applications
📝
Hancom Hangul Hancom Office
ðŸ“―ïļ
Hancom Hanshow Hancom Office
📊
Hancom Hancell Hancom Office
📄
Google Docs Google Workspace
📊
Google Sheets Google Workspace
ðŸ“―ïļ
Google Slides Google Workspace
🔌
Cadence Virtuoso EDA & Hardware
⚙ïļ
Synopsys EDA EDA & Hardware
💎
Verilog & VHDL EDA & Hardware
⚡
LTSpice EDA & Hardware
🔧
KiCad EDA & Hardware
📝
Notion Productivity
💎
Obsidian Productivity
💎
Slack Productivity
ðŸŽŪ
Discord Productivity
ðŸŽĻ
Figma Design Tools
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest Testing
⚡
Vitest Testing
🎭
Playwright Testing
ðŸŒē
Cypress Testing
🌐
Selenium Testing
💙
Flutter Mobile Development
ðŸ“ą
React Native Mobile Development
🍎
SwiftUI Mobile Development
ðŸ“ą
Expo Mobile Development
🐍
Django Web Frameworks
⚡
FastAPI Web Frameworks
ðŸŒķïļ
Flask Web Frameworks
🍃
Spring Boot Web Frameworks
ðŸļ
Gin Web Frameworks
⚡
Vite Build Tools
ðŸ“Ķ
Webpack Build Tools
⚡
esbuild Build Tools
🐘
Gradle Build Tools
ðŸŠķ
Maven Build Tools
🔧
CMake Build Tools
ðŸŽŪ
Unity Game Development
ðŸĪ–
Godot Game Development
🔌
Arduino Embedded & IoT
🔍
Nmap Security
🐕
Datadog Monitoring
📖
Swagger/OpenAPI Documentation
No results found
EN KO

Setup

Installation

pip install selenium Install Python
npm install selenium-webdriver Install Node.js
pip install webdriver-manager Install driver manager

Driver Setup

Chrome (Python)
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# Auto-install driver
driver = webdriver.Chrome(
    service=Service(ChromeDriverManager().install())
)

# Or with options
options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
driver = webdriver.Chrome(options=options)
Firefox (Python)
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(
    service=Service(GeckoDriverManager().install())
)
JavaScript/Node.js
const { Builder } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');

const options = new chrome.Options();
options.addArguments('--headless');

const driver = await new Builder()
    .forBrowser('chrome')
    .setChromeOptions(options)
    .build();

Locators

Finding Elements

By locators (Python)
from selenium.webdriver.common.by import By

# Single element
driver.find_element(By.ID, "id")
driver.find_element(By.NAME, "name")
driver.find_element(By.CLASS_NAME, "class")
driver.find_element(By.TAG_NAME, "tag")
driver.find_element(By.LINK_TEXT, "Link Text")
driver.find_element(By.PARTIAL_LINK_TEXT, "Partial")
driver.find_element(By.CSS_SELECTOR, "div.class")
driver.find_element(By.XPATH, "//div[@id='id']")

# Multiple elements
driver.find_elements(By.CLASS_NAME, "items")
CSS Selectors
# By ID
"#id"

# By class
".class"

# By attribute
"[name='value']"
"input[type='text']"

# Combination
"div.class#id"
"form input[type='submit']"

# Pseudo-classes
"li:first-child"
"li:nth-child(2)"
"li:last-child"
XPath
# By ID
"//*[@id='id']"

# By text
"//button[text()='Submit']"
"//button[contains(text(), 'Sub')]"

# By attribute
"//input[@name='email']"
"//input[contains(@class, 'btn')]"

# Parent/sibling
"//div/parent::*"
"//div/following-sibling::p"

# Index
"(//div[@class='item'])[1]"

Actions

Element Interactions

Basic actions
element = driver.find_element(By.ID, "id")

# Click
element.click()

# Type text
element.send_keys("Hello")
element.clear()
element.send_keys("New text")

# Submit form
element.submit()

# Get attribute
value = element.get_attribute("value")
href = element.get_attribute("href")

# Get text
text = element.text

# Check state
element.is_displayed()
element.is_enabled()
element.is_selected()
Keyboard actions
from selenium.webdriver.common.keys import Keys

element.send_keys(Keys.ENTER)
element.send_keys(Keys.TAB)
element.send_keys(Keys.ESCAPE)
element.send_keys(Keys.BACKSPACE)
element.send_keys(Keys.CONTROL, "a")  # Select all
element.send_keys(Keys.CONTROL, "c")  # Copy
element.send_keys(Keys.CONTROL, "v")  # Paste
ActionChains
from selenium.webdriver.common.action_chains import ActionChains

actions = ActionChains(driver)

# Hover
actions.move_to_element(element).perform()

# Double click
actions.double_click(element).perform()

# Right click
actions.context_click(element).perform()

# Drag and drop
actions.drag_and_drop(source, target).perform()

# Click and hold
actions.click_and_hold(element).perform()
actions.release().perform()

# Chain multiple actions
actions.move_to_element(element)\
    .click()\
    .send_keys("text")\
    .perform()

Form Elements

Select dropdown
from selenium.webdriver.support.ui import Select

select = Select(driver.find_element(By.ID, "dropdown"))

# Select by value
select.select_by_value("value1")

# Select by visible text
select.select_by_visible_text("Option 1")

# Select by index
select.select_by_index(1)

# Get selected option
selected = select.first_selected_option
all_options = select.options

# Deselect (multi-select)
select.deselect_all()
Checkbox & Radio
checkbox = driver.find_element(By.ID, "checkbox")

# Check if selected
if not checkbox.is_selected():
    checkbox.click()

# Uncheck
if checkbox.is_selected():
    checkbox.click()

# Radio button
radio = driver.find_element(By.CSS_SELECTOR, "input[value='option1']")
radio.click()

Waits

Wait Strategies

Implicit wait
# Global wait for all elements
driver.implicitly_wait(10)  # seconds
Explicit wait
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)

# Wait for element visible
element = wait.until(
    EC.visibility_of_element_located((By.ID, "id"))
)

# Wait for element clickable
element = wait.until(
    EC.element_to_be_clickable((By.ID, "id"))
)

# Wait for element present
element = wait.until(
    EC.presence_of_element_located((By.ID, "id"))
)

# Wait for text
wait.until(
    EC.text_to_be_present_in_element((By.ID, "id"), "expected text")
)
Expected conditions
from selenium.webdriver.support import expected_conditions as EC

EC.title_is("Page Title")
EC.title_contains("Title")
EC.url_contains("path")
EC.url_to_be("https://example.com")
EC.visibility_of_element_located(locator)
EC.invisibility_of_element_located(locator)
EC.element_to_be_clickable(locator)
EC.element_to_be_selected(locator)
EC.alert_is_present()
EC.frame_to_be_available_and_switch_to_it(locator)
Custom wait
def element_has_class(element, class_name):
    return class_name in element.get_attribute("class")

wait.until(lambda d: element_has_class(
    d.find_element(By.ID, "id"), "active"
))

Alerts & Popups

Handling Alerts

Alert handling
from selenium.webdriver.common.alert import Alert

# Wait for and switch to alert
alert = wait.until(EC.alert_is_present())

# Or directly
alert = driver.switch_to.alert

# Get alert text
text = alert.text

# Accept (OK)
alert.accept()

# Dismiss (Cancel)
alert.dismiss()

# Send keys (prompt)
alert.send_keys("input text")
alert.accept()

JavaScript

JavaScript Execution

Execute script
# Execute JavaScript
driver.execute_script("alert('Hello');")

# Return value
result = driver.execute_script("return document.title;")

# Pass arguments
element = driver.find_element(By.ID, "id")
driver.execute_script("arguments[0].click();", element)

# Scroll into view
driver.execute_script("arguments[0].scrollIntoView();", element)

# Scroll to position
driver.execute_script("window.scrollTo(0, 500);")

# Scroll to bottom
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

# Set value
driver.execute_script("arguments[0].value = 'text';", element)

# Remove attribute
driver.execute_script("arguments[0].removeAttribute('disabled');", element)

Screenshots

Capturing

Screenshots
# Save screenshot
driver.save_screenshot("screenshot.png")

# Get as base64
base64_img = driver.get_screenshot_as_base64()

# Get as PNG bytes
png_bytes = driver.get_screenshot_as_png()

# Element screenshot
element = driver.find_element(By.ID, "id")
element.screenshot("element.png")

Cleanup

Browser Management

Cleanup
# Close current window
driver.close()

# Quit browser
driver.quit()

# Context manager (Python)
from selenium import webdriver

with webdriver.Chrome() as driver:
    driver.get("https://example.com")
    # automatically quit on exit