
driver = webdriver.Chrome()→ 启动驱动服务driver.get(url)→ 发送HTTP请求到驱动浏览器 | 驱动 | 维护方 |
|---|---|---|
Chrome | ChromeDriver | |
Firefox | GeckoDriver | Mozilla |
Edge | EdgeDriver | Microsoft |
# 启动浏览器
driver = webdriver.Chrome()
# 访问URL
driver.get("https://example.com")
# 关闭浏览器(释放资源)
driver.quit() # ✅ 推荐!
from selenium.webdriver.common.by import By
# 优先级推荐:ID > CSS > XPath
driver.find_element(By.ID, "search-box") # 🥇 最快
driver.find_element(By.CSS_SELECTOR, ".btn-submit")
driver.find_element(By.XPATH, "//div[@class='footer']//a")
💡 避坑提示:避免无脑用XPath!优先选择ID和CSS Selector提升稳定性。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# ✅ 显式等待(黄金标准)
element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID, "dynamic-element"))
)
# ❌ 避免野生sleep!
import time
time.sleep(5) # 毁灭性操作!
方法 | 作用 | 示例 |
|---|---|---|
send_keys() | 输入文本 | search_box.send_keys("Selenium") |
click() | 点击元素 | submit_btn.click() |
get_attribute("href") | 获取属性值 | link = element.get_attribute("href") |
classLoginPage:
# 元素定位器
USERNAME = (By.ID, "username")
PASSWORD = (By.CSS_SELECTOR, ".pwd-input")
def__init__(self, driver):
self.driver = driver
deflogin(self, user, pwd):
self.driver.find_element(*self.USERNAME).send_keys(user)
self.driver.find_element(*self.PASSWORD).send_keys(pwd)
# ...
✅ 优势:业务逻辑与元素分离,维护成本降低50%+
# 无头模式(不显示浏览器界面)
from selenium.webdriver import ChromeOptions
options = ChromeOptions()
options.add_argument("--headless=new") # 新版语法
driver = webdriver.Chrome(options=options)
# 获取屏幕截图(调试必备)
driver.save_screenshot("result.png")
# 环境安装(Python版)
pip install selenium # 安装库
# 从官网下载对应版本驱动:
# https://chromedriver.chromium.org/downloads
# 最小化可运行demo:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://baidu.com")
driver.find_element(By.ID, "kw").send_keys("Hello Selenium!")
driver.find_element(By.ID, "su").click()
driver.quit()
结语:Selenium WebDriver 的核心价值在于通过标准协议实现浏览器操作的工业化,结合健壮的API与等待策略解决UI自动化稳定性难题。掌握其原理与API分层设计(如POM),是构建可维护自动化测试框架的基石。
本文原创于【程序员二黑】公众号,转载请注明出处!
欢迎大家关注笔者的公众号:程序员二黑,专注于软件测试干货分享
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。