Selenium 是一个强大的自动化测试工具,广泛用于 Web 应用程序的浏览器操作。以下是完整的 Selenium 教程,帮助初学者理解其基础功能和高级用法。
1. 安装 Selenium 和 WebDriver
1.1 安装 Selenium
使用 Python 的 pip
安装 Selenium:
pip install selenium
1.2 下载 WebDriver
根据目标浏览器下载对应的 WebDriver:
- Chrome: ChromeDriver
- Firefox: GeckoDriver
- Edge: Edge WebDriver
- Safari: 已集成在 macOS 系统中,无需下载。
将 WebDriver 可执行文件放在系统 PATH 中,或者使用路径指定。
2. 启动浏览器并打开网页
示例代码:
from selenium import webdriver
# 创建浏览器实例(以 Chrome 为例)
driver = webdriver.Chrome()
# 打开网页
driver.get("https://www.example.com")
# 打印网页标题
print(driver.title)
# 关闭浏览器
driver.quit()
3. 定位元素
Selenium 提供多种方式定位网页元素,主要包括:
定位方式 | 方法 | 示例 |
---|---|---|
ID | find_element_by_id | driver.find_element_by_id("element_id") |
Name | find_element_by_name | driver.find_element_by_name("name") |
Class Name | find_element_by_class_name | driver.find_element_by_class_name("class_name") |
CSS Selector | find_element_by_css_selector | driver.find_element_by_css_selector(".class #id") |
XPath | find_element_by_xpath | driver.find_element_by_xpath("//div[@id='example']") |
Tag Name | find_element_by_tag_name | driver.find_element_by_tag_name("button") |
Link Text | find_element_by_link_text | driver.find_element_by_link_text("Click here") |
Partial Link Text | find_element_by_partial_link_text | driver.find_element_by_partial_link_text("Click") |
4. 常见操作
4.1 点击元素
button = driver.find_element_by_id("submit")
button.click()
4.2 输入文本
input_box = driver.find_element_by_name("username")
input_box.send_keys("my_username")
4.3 清除文本框内容
input_box.clear()
4.4 获取元素文本
text = driver.find_element_by_id("message").text
print(text)
4.5 获取属性值
attribute_value = driver.find_element_by_id("image").get_attribute("src")
print(attribute_value)
5. 页面操作
5.1 模拟滚动
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
5.2 切换窗口
# 获取所有窗口句柄
handles = driver.window_handles
driver.switch_to.window(handles[1]) # 切换到第二个窗口
5.3 切换框架
driver.switch_to.frame("iframe_name")
driver.switch_to.default_content() # 切回主页面
6. 等待
6.1 显式等待
显式等待可以让程序在指定条件下暂停执行。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 等待元素可见
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "element_id"))
)
6.2 隐式等待
隐式等待在全局设置一次,适用于简单项目。
driver.implicitly_wait(10) # 全局等待 10 秒
7. 高级用法
7.1 文件上传
upload = driver.find_element_by_id("file_upload")
upload.send_keys("C:/path/to/file.txt")
7.2 处理弹窗
alert = driver.switch_to.alert
print(alert.text) # 获取弹窗内容
alert.accept() # 确认弹窗
7.3 截屏
driver.save_screenshot("screenshot.png")
8. 自动化测试中的最佳实践
- 优雅地关闭浏览器:在脚本执行结束时使用
driver.quit()
关闭所有窗口。 - 避免硬编码等待:使用显式等待代替
time.sleep
。 - 使用动态定位:避免依赖过于具体的选择器(如 ID),使用更灵活的 XPath 或 CSS。
9. 参考资源
通过以上内容,您可以快速上手 Selenium,完成 Web 自动化操作。如果需要更高级的功能(如多浏览器支持、分布式测试等),可以考虑结合其他工具如 TestNG 或 Selenium Grid。
发布者:myrgd,转载请注明出处:https://www.object-c.cn/4577