πŸš€ Setup & Open Browser

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.implicitly_wait(10)  # optional: wait up to 10s for elements
driver.get("<http://localhost:8080/my-account/>")  # open page


🌐 Browser Navigation

Action Code
Open URL driver.get("http://...")
Back driver.back()
Forward driver.forward()
Refresh driver.refresh()
Close browser driver.quit()

πŸ”Ž Finding Elements

By Example
ID driver.find_element(By.ID, "reg_email")
Name driver.find_element(By.NAME, "username")
Class Name driver.find_element(By.CLASS_NAME, "btn")
Tag Name driver.find_element(By.TAG_NAME, "input")
Link Text driver.find_element(By.LINK_TEXT, "My Account")
Partial Link Text driver.find_element(By.PARTIAL_LINK_TEXT, "Account")
CSS Selector driver.find_element(By.CSS_SELECTOR, "input#username")
XPath driver.find_element(By.XPATH, "//input[@id='username']")

✍️ Interacting with Elements

Action Code
Type text element.send_keys("text")
Click element.click()
Clear field element.clear()
Get text element.text
Get attribute element.get_attribute("value")
Check if displayed element.is_displayed()

πŸ’€ Waits

Type Example
Implicit wait driver.implicitly_wait(10)
Explicit wait
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "foo")))


πŸ“‹ Useful Extras

Task Code
Take screenshot driver.save_screenshot("screenshot.png"
Handle alert
alert = driver.switch_to.alert
alert.accept()  # or alert.dismiss()
``` |
| Switch to frame | `driver.switch_to.frame("frameName")` |
| Switch back | `driver.switch_to.default_content()` |
| Switch tab/window |
```python
driver.switch_to.window(driver.window_handles[1])
``` |

---

### βœ… Pro Tips
- Always close browser with `driver.quit()` at the end.
- Use `try/finally` to ensure the browser closes even if test fails.
- Avoid hard sleeps (`time.sleep()`) β€” use waits instead.

---