(敲黑板)在自动化测试领域,Selenium绝对是当之无愧的王者!它支持多种浏览器(Chrome/Firefox/Edge等)、跨平台运行(Windows/Mac/Linux)、还能用Python/Java/C#等多种语言编写脚本。最重要的是——完全免费开源!(打工人狂喜)
pip install selenium
(命令行输入)(重要提示)驱动版本必须与浏览器版本完全匹配!否则会报错!!!
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.example.com/login")
# 定位元素并操作
driver.find_element("id", "username").send_keys("testuser")
driver.find_element("name", "password").send_keys("Pass1234")
driver.find_element("xpath", '//button[@type="submit"]').click()
time.sleep(3)
print(driver.current_url) # 验证是否跳转成功
driver.quit()
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located(("id", "welcome-msg")))
try:
driver.find_element("class_name", "error-msg")
print("登录失败!")
except NoSuchElementException:
print("登录成功!")
(实战场景)需要抓取某新闻网站的热搜榜单,但页面是JavaScript动态生成的!
# 先滚动到页面底部(触发懒加载)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 使用CSS选择器定位元素
items = driver.find_elements("css selector", ".news-item")
for item in items:
title = item.find_element("class name", "title").text
link = item.find_element("tag name", "a").get_attribute("href")
print(f"{title}: {link}")
(避坑指南)遇到动态加载内容时:
(血泪教训)文件上传是很多新手的大坑!传统方法send_keys()
有时会失效,因为:
元素# 定位隐藏的input元素
upload_input = driver.find_element("xpath", "//input[@type='file']")
# 使用JavaScript移除hidden属性
driver.execute_script("arguments[0].style.display = 'block';", upload_input)
# 发送文件路径
upload_input.send_keys("/Users/xxx/Desktop/test.jpg")
# 点击上传按钮
driver.find_element("id", "upload-btn").click()
元素定位失败:
浏览器自动关闭:
options.add_experimental_option("detach", True)
driver.quit()
Headless模式卡顿:
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
options.add_argument("--disable-gpu")
(超级实用)我的项目结构通常这样组织:
├── config/ # 配置文件
├── pages/ # 页面对象类
├── testcases/ # 测试用例
├── utils/ # 工具函数
└── reports/ # 测试报告
Selenium就像一把瑞士军刀,功能强大但需要正确使用。记住:好的自动化测试不是写最复杂的代码,而是写最容易维护的代码!遇到问题多查官方文档([Selenium官网]),少走弯路。
(最后叮嘱)千万别在正式环境跑测试脚本!曾经有同事误操作清空了生产数据库…(别问我是怎么知道的)