Selenium入门教程

一、简介

Selenium 是一个用于自动化 Web 浏览器操作的工具,主要用于 Web 应用程序的测试,也可用于 Web 数据爬取等场景。它支持多种编程语言,如 Python、Java、C# 等,并且能在多种浏览器上运行,包括 Chrome、Firefox、Safari、Edge 等。

二、环境搭建

1、安装 Selenium 库

如果使用 Python,在终端或命令提示符中输入pip install selenium来安装。

2、下载浏览器驱动

Selenium 需要与特定浏览器的 WebDriver 一起使用。以 Chrome 浏览器为例,可从ChromeDriver 官方网站下载对应版本的驱动程序。下载完成后,将其解压,并把所在路径添加到系统环境变量中,或者在代码中指定其位置。

三、基本操作

1、导入库和初始化 WebDriver

  1. python 运行
  2. from selenium import webdriver
  3. from selenium.webdriver.edge.service import Service
  4. from selenium.webdriver.edge.options import Options
  5. \# 设置Edge浏览器选项
  6. edge\_options = Options()
  7. edge\_options.add\_argument("--headless") # 无头模式,不显示浏览器窗口
  8. edge\_options.add\_argument("--disable-gpu")
  9. edge\_options.add\_argument("--window-size=1920,1080")
  10. \# 指定Edge驱动路径(需要先下载对应版本的Edge驱动)
  11. edge\_service = Service('D:\\桌面文件\\edgedriver\_win64\\msedgedriver.exe') # 替换为你的Edge驱动路径
  12. \# 启动Edge浏览器
  13. driver = webdriver.Edge(service=edge\_service, options=edge\_options)

2、打开网页

  1. python 运行
  2. url = "https://www.example.com"
  3. driver.get(url)

3、定位元素

  1. python 运行
  2. \# 通过ID定位元素
  3. element = driver.find\_element(By.ID, "element\_id")
  4. \# 通过名称定位元素
  5. element = driver.find\_element(By.NAME, "element\_name")
  6. \# 通过类名定位元素
  7. element = driver.find\_element(By.CLASS\_NAME, "element\_class")
  8. \# 通过CSS选择器定位元素
  9. element = driver.find\_element(By.CSS\_SELECTOR, "css\_selector")
  10. \# 通过XPath定位元素
  11. element = driver.find\_element(By.XPATH, "xpath\_expression")

4、操作元素

  1. python 运行
  2. \# 输入文本
  3. input\_element = driver.find\_element(By.ID, "input\_id")
  4. input\_element.send\_keys("Hello, World!")
  5. \# 点击按钮
  6. button\_element = driver.find\_element(By.ID, "button\_id")
  7. button\_element.click()

5、获取页面信息

  1. python 运行
  2. \# 获取网页标题
  3. title = driver.title
  4. \# 获取页面源代码
  5. source\_code = driver.page\_source

6、关闭浏览器

  1. python 运行
  2. driver.quit()

四、等待机制

1、隐式等待

设置一个全局的等待时间,在查找元素时,如果元素没有立即出现,会在指定的时间内不断尝试查找,直到元素出现或超过等待时间。

  1. python 运行
  2. driver.implicitly\_wait(10) # 等待10秒

2、显式等待

指定要等待的条件,在指定的时间内不断检查条件是否满足,直到条件满足或超过等待时间。

  1. python 运行
  2. from selenium.webdriver.support import expected\_conditions as EC
  3. from selenium.webdriver.support.ui import WebDriverWait
  4. \# 等待元素出现
  5. element = WebDriverWait(driver, 10).until(EC.presence\_of\_element\_located((By.ID, "element\_id")))

五、实战案例

以自动化登录网站为例:

  1. python 运行
  2. from selenium import webdriver
  3. \# 设置浏览器驱动路径
  4. driver = webdriver.Chrome(executable\_path='/path/to/chromedriver')
  5. \# 打开登录页面
  6. driver.get('https://www.example.com/login')
  7. \# 等待页面加载完成
  8. time.sleep(2)
  9. \# 定位用户名和密码输入框
  10. username\_input = driver.find\_element\_by\_id('username')
  11. password\_input = driver.find\_element\_by\_id('password')
  12. \# 输入用户名和密码
  13. username\_input.send\_keys('your\_username')
  14. password\_input.send\_keys('your\_password')
  15. \# 模拟点击登录按钮
  16. login\_button = driver.find\_element\_by\_id('login\_button')
  17. login\_button.click()
  18. \# 等待一段时间,确保登录成功
  19. time.sleep(3)
  20. \# 关闭浏览器
  21. driver.quit()