自动化测试框架Selenium的基本知识和简单实战

Selenium 核心组件

  • Selenium WebDriver:是 Selenium 的核心,直接控制浏览器,与浏览器进行交互,支持不同浏览器的驱动(如 ChromeDriver、GeckoDriver 等)。
  • Selenium IDE:是一个基于浏览器的插件,用于录制和回放测试脚本,方便快速创建简单的测试用例。
  • Selenium Grid:用于分布式测试,可以在多个浏览器和操作系统上并行运行测试,提高测试效率。

元素定位

属性 函数
CLASS find_element(by=By.CLASS_NAME, value=‘’)
XPATH find_element(by=By.XPATH, value=‘’)
LINK_TEXT find_element(by=By.LINK_TEXT, value=‘’)
PARTIAL_LINK_TEXT find_element(by=By.PARTIAL_LINK_TEXT, value=‘’)
TAG find_element(by=By.TAG_NAME, value=‘’)
CSS find_element(by=By.CSS_SELECTOR,value=‘’)
ID find_element(by=By.ID, value=‘’)

常用操作

浏览器操作

  • 打开网页:driver.get("https://www.example.com")
  • 最大化窗口:driver.maximize_window()
  • 最小化窗口:driver.minimize_window()
  • 关闭当前窗口:driver.close()
  • 关闭所有窗口并退出驱动:driver.quit()
  • 前进:driver.forward()
  • 后退:driver.back()
  • 网页标题:driver.title
  • 网页网址:driver.current_url
  • 网页名称:driver.name
  • 切换窗口:
# 获取打开的多个窗口句柄
windows = driver.window_handles
# 切换到当前最新打开的窗口
driver.switch_to.window(windows[-1])
  • 截图:driver.get_screenshot_as_file("url")

元素操作

  • 输入文本:element.send_keys("文本内容")
  • 点击元素:element.click()
  • 获取元素文本:text = element.text
  • 获取元素属性值:attribute_value = element.get_attribute("属性名")

等待操作

  • 强制等待:使用time.sleep(秒数),让程序暂停指定的时间,缺点是不够灵活,无论元素是否加载完成都等待固定时间。
import time
time.sleep(3)
  • 隐式等待:driver.implicitly_wait(秒数),设置全局等待时间,在查找元素时,如果元素未立即出现,会在指定时间内不断尝试查找,直到找到元素或超时。
driver.implicitly_wait(10)
  • 显式等待:使用WebDriverWait类,根据特定条件等待元素出现、可点击、可见等。
from selenium.webdriver.common.by import By
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((By.ID, "element_id")))

实战案例

以登录一个简单的 Web 应用为例:

from selenium import webdriver
from selenium.webdriver.common.by import By
# 初始化浏览器驱动
driver = webdriver.Chrome()
# 打开登录页面
driver.get("https://www.example.com/login")
# 定位用户名和密码输入框及登录按钮
username_input = driver.find_element(By.ID, "username")
password_input = driver.find_element(By.ID, "password")
login_button = driver.find_element(By.ID, "login-button")
# 输入用户名和密码
username_input.send_keys("your_username")
password_input.send_keys("your_password")
# 点击登录按钮
login_button.click()
# 等待页面加载完成(可根据实际情况调整等待方式)
# 例如使用显式等待判断登录后的元素是否出现
# 关闭浏览器
driver.quit()

进阶技巧

6.1 处理 iframe

如果网页中存在 iframe,需要先切换到 iframe,再进行元素定位和操作。

# 切换到iframe
driver.switch_to.frame("iframe_id")
# 定位和操作元素
element = driver.find_element(By.ID, "element_in_iframe")
# 切换回默认内容
driver.switch_to.default_content()

6.2 处理弹窗

  • Alert 弹窗:用于处理浏览器原生的警告框、确认框、提示框等。
alert = driver.switch_to.alert
# 获取弹窗文本
alert_text = alert.text
# 点击确认按钮
alert.accept()
# 点击取消按钮
alert.dismiss()

posted @ 2025-11-28 18:02  Falamo寒枝  阅读(3)  评论(0)    收藏  举报