Python selenium 库
                           
天天向上
发布: 2025-03-18 00:45:26

原创
788 人浏览过

Selenium 是一个广泛使用的自动化测试工具,主要用于网页应用的自动化测试和网页操作。它可以模拟用户在浏览器中的所有操作,自动执行任务,特别适合于 Web 应用的自动化测试和 Web Scraping(网页抓取)。Selenium 支持多种浏览器和操作系统,可以与 Python 配合使用,构建强大的自动化脚本。

1. Selenium 简介

Selenium 是一个支持多种编程语言(如 Python、Java、C#、Ruby 等)的自动化测试工具,主要用于:

  • 自动化浏览器操作
  • 模拟用户行为(点击、输入、滚动等)
  • 自动化测试 Web 应用
  • Web Scraping(网页抓取)

2. 安装 Selenium

要在 Python 中使用 Selenium,需要先安装该库。可以使用 pip 安装:

pip install selenium

此外,Selenium 需要一个浏览器驱动(如 ChromeDriver、GeckoDriver)来与浏览器进行交互。可以根据所使用的浏览器下载对应的驱动:

3. 基本使用

3.1 启动浏览器

Selenium 提供了多种方式来启动浏览器。以下是使用 Chrome 浏览器的基本示例:

from selenium import webdriver

# 启动 Chrome 浏览器
driver = webdriver.Chrome(executable_path='path_to_chromedriver')

# 打开网页
driver.get("https://www.example.com")

3.2 定位网页元素

Selenium 提供多种方法来定位网页元素,包括 IDClass NameTag NameNameXPathCSS Selector 等。最常用的方法如下:

  • 通过 ID 定位
  element = driver.find_element_by_id("element_id")
  • 通过 Class Name 定位
  element = driver.find_element_by_class_name("class_name")
  • 通过 XPath 定位
  element = driver.find_element_by_xpath("//input[@name='q']")
  • 通过 CSS Selector 定位
  element = driver.find_element_by_css_selector(".class_name input[type='text']")

3.3 与元素交互

Selenium 可以模拟用户对网页元素的各种操作。例如,填写表单、点击按钮、滚动页面等。

  • 输入文本
  input_box = driver.find_element_by_name("q")
  input_box.send_keys("Selenium")
  • 点击按钮
  button = driver.find_element_by_id("submit")
  button.click()
  • 获取元素的文本内容
  element = driver.find_element_by_tag_name("h1")
  print(element.text)
  • 选择下拉框选项
  from selenium.webdriver.support.ui import Select
  select_element = driver.find_element_by_id("dropdown")
  select = Select(select_element)
  select.select_by_visible_text("Option 1")

3.4 等待元素加载

Web 页面中的元素可能会因网络延迟或动态加载而未立刻可用,Selenium 提供了显式等待和隐式等待机制来处理这种情况。

  • 隐式等待:设置全局的等待时间,Selenium 会等待一段时间来查找元素。
  driver.implicitly_wait(10)  # 等待最多 10 秒
  • 显式等待:等待某个特定的条件成立后再继续执行。
  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"))
  )

3.5 关闭浏览器

使用 Selenium 进行自动化操作后,最终需要关闭浏览器。

  • 关闭当前窗口
  driver.close()
  • 退出浏览器,关闭所有窗口
  driver.quit()

4. 高级用法

4.1 执行 JavaScript

Selenium 允许在浏览器中执行 JavaScript 代码,可以用来执行一些 JavaScript 操作,比如滚动页面、获取 JavaScript 返回的值等。

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

4.2 处理弹出窗口和对话框

Selenium 可以处理浏览器中的弹出窗口、警告框、确认框和提示框。

  • 接受警告框
  from selenium.webdriver.common.alert import Alert

  alert = Alert(driver)
  alert.accept()  # 点击 "确定"
  • 拒绝确认框
  alert.dismiss()  # 点击 "取消"

4.3 窗口切换

Selenium 可以处理多个窗口(Tab)的切换。可以通过窗口句柄来切换。

# 获取当前窗口句柄
current_window = driver.current_window_handle

# 获取所有窗口句柄
all_windows = driver.window_handles

# 切换到新打开的窗口
driver.switch_to.window(all_windows[1])

# 关闭当前窗口
driver.close()

# 切换回原窗口
driver.switch_to.window(current_window)

4.4 截图

Selenium 可以抓取浏览器的截图并保存到文件。

driver.save_screenshot("screenshot.png")

4.5 操作鼠标和键盘

Selenium 也支持模拟鼠标和键盘操作,例如鼠标移动、点击和键盘输入。

  • 鼠标移动并点击
  from selenium.webdriver.common.action_chains import ActionChains

  element = driver.find_element_by_id("button_id")
  action = ActionChains(driver)
  action.move_to_element(element).click().perform()
  • 模拟键盘输入
  from selenium.webdriver.common.keys import Keys

  input_box = driver.find_element_by_name("q")
  input_box.send_keys("Selenium" + Keys.RETURN)  # 按下回车键

5. Web Scraping 与 Selenium

Selenium 也可以用于网页数据抓取(Web Scraping)。与 requestsBeautifulSoup 配合使用时,Selenium 可以处理动态加载的内容。例如,JavaScript 动态生成的网页内容。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 启动浏览器
driver = webdriver.Chrome(executable_path="path_to_chromedriver")

# 打开网页
driver.get("https://example.com")

# 等待某个元素加载
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "element_id"))
)

# 获取网页内容
content = driver.page_source
print(content)

# 关闭浏览器
driver.quit()

6. 总结

Selenium 是一个功能强大的自动化测试工具,适用于自动化浏览器操作、Web Scraping、UI 测试等场景。它能够模拟用户的行为,如点击、输入、滚动等,并且支持与多种浏览器和操作系统兼容。在与 Python 配合使用时,Selenium 使得自动化脚本的编写变得简单而高效,特别适合在网页内容动态加载、需要用户交互时使用。

发表回复 0

Your email address will not be published. Required fields are marked *